IMDB Web搜寻器-Scrapy-Python

时间:2018-08-26 03:32:45

标签: python-3.x scrapy python-3.6 scrapy-spider

mapply()

我已经编写了以上代码,用于刮擦2017年至今的所有imdb电影。但是这段代码只能刮取100部电影。请帮忙。

1 个答案:

答案 0 :(得分:4)

我认为问题出在

nextpg = response.css('div.desc > a::attr(href)').extract_first()

在此页面上 https://www.imdb.com/search/title?year=2017,2018&title_type=feature&sort=moviemeter,asc

下一页链接的代码是这个

<div class="desc">
    <span class="lister-current-first-item">1</span> to
    <span class="lister-current-last-item">50</span> of 24,842 titles
    <span class="ghost">|</span>
    <a href="?year=2017,2018&amp;title_type=feature&amp;sort=moviemeter,asc&amp;page=2&amp;ref_=adv_nxt" class="lister-page-next next-page" ref-marker="adv_nxt">Next »</a>
</div>

您的代码使用锚文本Next >>

来获取链接的href。

这是

https://www.imdb.com/search/title?year=2017,2018&title_type=feature&sort=moviemeter,asc&page=2&ref_=adv_nxt

您转到该页面,然后抓取接下来的50部电影

但是div中具有desc类的html中有两个链接。不像首页。

第一个链接是上一个链接,而不是下一个链接。

<div class="desc">
    <span class="lister-current-first-item">51</span> to
    <span class="lister-current-last-item">100</span> of 24,842 titles
    <span class="ghost">|</span> <a href="?year=2017,2018&amp;title_type=feature&amp;sort=moviemeter,asc&amp;page=1&amp;ref_=adv_prv" class="lister-page-prev prev-page" ref-marker="adv_nxt">« Previous</a>
    <span class="ghost">|</span> <a href="?year=2017,2018&amp;title_type=feature&amp;sort=moviemeter,asc&amp;page=3&amp;ref_=adv_nxt" class="lister-page-next next-page" ref-marker="adv_nxt">Next »</a>
</div>

我要做的是将计数器设置为0。

成功刮刮后增加。

如果计数器大于0,则抓住第二个链接并转到该链接,然后在该页面上抓取结果

如果计数器不大于0,则抓住第一个链接并转到该链接,然后在该页面上抓取结果