抓取稍后使用 Cheerio 加载的数据
Scrape data which gets loaded in later with Cheerio
我正在尝试使用 Cheerio js 抓取网站 gogoanime。到目前为止很多工作,直到我 运行 撞墙。我想抓取一些稍后由 JavaScript 加载的数据。我知道 cheerio 保存源代码。在源代码中我们可以看到:
<div class="main_body">
<div class="anime_name episode_video">
<div class="anime_name_img_episode_video"></div>
<h2>Episodes</h2>
</div>
<div class="clr"></div>
<div class="anime_video_body" id="episode_wrapper">Loading...</div>
</div>
我要抓取的数据稍后会加载到#episode_wrapper 中。这将加载到:
<ul data-range="0" style="display:block">
<li>
<a data-name="1:01" data-name-normalized="1" href="/anime/my-hero-academia-dub-jwwn/ep-1" class="active" data-servers="28,40,35">
EP 01
</a>
</li>
<li>
<a data-name="2:02" data-name-normalized="2" href="/anime/my-hero-academia-dub-jwwn/ep-2" data-servers="28,40,35">
EP 02
</a>
</li>
...
</ul>
所以我知道在抓取页面之前必须等待数据加载。但我认为这不能用 Cheerio 来完成。但是我看到了这个存储库,其中开发人员还使用了 Cheerio:
查看函数:animeContentHandler。
https://github.com/ChrisMichaelPerezSantiago/gogoanime/blob/master/src/api/api.js
老实说,我不明白他为什么能用 Cheerio 刮它。当我尝试抓取元素时,找不到包含所有剧集的数据。
前进的最佳方式是什么?抓取稍后加载的数据的最佳方法是什么?有人可以向我解释为什么它对他有用而不对我有用吗?
感谢大家的帮助!
我可以看到剧集数据,它来自这个xhr:
https://gogoanime.pro/ajax/film/servers/jwwn?ep=&episode=
您也可以使用 puppeteer 一次性搞定。
我正在尝试使用 Cheerio js 抓取网站 gogoanime。到目前为止很多工作,直到我 运行 撞墙。我想抓取一些稍后由 JavaScript 加载的数据。我知道 cheerio 保存源代码。在源代码中我们可以看到:
<div class="main_body">
<div class="anime_name episode_video">
<div class="anime_name_img_episode_video"></div>
<h2>Episodes</h2>
</div>
<div class="clr"></div>
<div class="anime_video_body" id="episode_wrapper">Loading...</div>
</div>
我要抓取的数据稍后会加载到#episode_wrapper 中。这将加载到:
<ul data-range="0" style="display:block">
<li>
<a data-name="1:01" data-name-normalized="1" href="/anime/my-hero-academia-dub-jwwn/ep-1" class="active" data-servers="28,40,35">
EP 01
</a>
</li>
<li>
<a data-name="2:02" data-name-normalized="2" href="/anime/my-hero-academia-dub-jwwn/ep-2" data-servers="28,40,35">
EP 02
</a>
</li>
...
</ul>
所以我知道在抓取页面之前必须等待数据加载。但我认为这不能用 Cheerio 来完成。但是我看到了这个存储库,其中开发人员还使用了 Cheerio:
查看函数:animeContentHandler。 https://github.com/ChrisMichaelPerezSantiago/gogoanime/blob/master/src/api/api.js
老实说,我不明白他为什么能用 Cheerio 刮它。当我尝试抓取元素时,找不到包含所有剧集的数据。
前进的最佳方式是什么?抓取稍后加载的数据的最佳方法是什么?有人可以向我解释为什么它对他有用而不对我有用吗?
感谢大家的帮助!
我可以看到剧集数据,它来自这个xhr:
https://gogoanime.pro/ajax/film/servers/jwwn?ep=&episode=
您也可以使用 puppeteer 一次性搞定。