mapply()
我已经编写了以上代码,用于刮擦2017年至今的所有imdb电影。但是这段代码只能刮取100部电影。请帮忙。
答案 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&title_type=feature&sort=moviemeter,asc&page=2&ref_=adv_nxt" class="lister-page-next next-page" ref-marker="adv_nxt">Next »</a>
</div>
您的代码使用锚文本Next >>
来获取链接的href。这是
您转到该页面,然后抓取接下来的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&title_type=feature&sort=moviemeter,asc&page=1&ref_=adv_prv" class="lister-page-prev prev-page" ref-marker="adv_nxt">« Previous</a>
<span class="ghost">|</span> <a href="?year=2017,2018&title_type=feature&sort=moviemeter,asc&page=3&ref_=adv_nxt" class="lister-page-next next-page" ref-marker="adv_nxt">Next »</a>
</div>
我要做的是将计数器设置为0。
成功刮刮后增加。
如果计数器大于0,则抓住第二个链接并转到该链接,然后在该页面上抓取结果
如果计数器不大于0,则抓住第一个链接并转到该链接,然后在该页面上抓取结果