我有一个csv文件,其中包含300部电影的imdb movieID。每部电影的imdb movie url的格式如下:https://www.imdb.com/title/ttmovieID
我想抓取每部电影的缩略图链接、标题、演员和发行年份的专用站点,并将其写入csv文件,其中每行将包含每部电影的数据,
既然我在csv文件中有每部电影的movieID,那么我的spider的start_urls应该是什么?我的parse函数的结构应该是什么?还有,如何将其写入csv文件?
对于imdb的前250个页面,我有以下方法。我应该在start_urls和链接中做什么修改?
import scrapy
import csv
from example.items import MovieItem
class ImdbSpider(scrapy.Spider):
name = "imdbtestspider"
allowed_domains = ["imdb.com"]
start_urls = ['http://www.imdb.com/chart/top',]
def parse(self,response):
links=response.xpath('//tbody[@class="lister-list"]/tr/td[@class="titleColumn"]/a/@href').extract()
i=1
for link in links:
abs_url=response.urljoin(link)
url_next='//*[@id="main"]/div/span/div/div/div[2]/table/tbody/tr['+str(i)+']/td[3]/strong/text()'
rating=response.xpath(url_next).extract()
if(i <= len(links)):
i=i+1
yield scrapy.Request(abs_url, callback=self.parse_indetail, meta={'rating' : rating })
def parse_indetail(self,response):
item = MovieItem()
item['title'] = response.xpath('//div[@class="title_wrapper"]/h1/text()').extract()[0][:-1]
item['director'] = response.xpath('//div[@class="credit_summary_item"]/span[@itemprop="director"]/a/span/text()').extract()
return item
1条答案
按热度按时间6rqinv9w1#
你可以在
start_requests
函数中读取你的.csv
文件,并从那里产生请求。代码可以是: