【发布时间】:2016-06-19 13:36:08
【问题描述】:
我正在做一个课堂项目,并试图获取截至 2016 年的所有 IMDB 电影数据(标题、预算等)。我采用了来自 https://github.com/alexwhb/IMDB-spider/blob/master/tutorial/spiders/spider.py 的代码。
我的想法是:从 i in range(1874,2016) (因为 1874 是 http://www.imdb.com/year/ 上显示的最早年份),将程序定向到相应年份的网站,并从该 url 获取数据。
但问题是,每年每个页面只显示 50 部电影,所以在爬取了 50 部电影之后,我如何才能转到下一页呢?每年爬完之后,我如何才能进入下一年?到目前为止,这是我解析 url 部分的代码,但它只能抓取特定年份的 50 部电影。
class tutorialSpider(scrapy.Spider):
name = "tutorial"
allowed_domains = ["imdb.com"]
start_urls = ["http://www.imdb.com/search/title?year=2014,2014&title_type=feature&sort=moviemeter,asc"]
def parse(self, response):
for sel in response.xpath("//*[@class='results']/tr/td[3]"):
item = MovieItem()
item['Title'] = sel.xpath('a/text()').extract()[0]
item['MianPageUrl']= "http://imdb.com"+sel.xpath('a/@href').extract()[0]
request = scrapy.Request(item['MianPageUrl'], callback=self.parseMovieDetails)
request.meta['item'] = item
yield request
【问题讨论】:
-
div class="see-more->"/search/title?year=1930,1930&title_type=feature&sort=moviemeter,asc然后,如果您查看该页面,则会发现另一条线索,span class="pagination" -> href="/search/title?sort=moviemeter,asc&start=51&title_type=feature&year=1930,1930"
标签: python python-2.7 scrapy scrapy-spider