我正在使用Scrapy 1.1.0和Python 3.5从网站上抓取数据。 以下代码正在运行......
class ImdbSpider(scrapy.Spider):
name = "imdbFav"
allowed_domains = ["http://www.imdb.com"]
start_urls = [
"http://www.imdb.com/title/tt0203166/"
]
recommendRegex = re.compile(r'\/title\/([A-Za-z0-9]*)')
def parse(self, response):
for recommend in response.xpath('//div[@class="rec_page"]/div[@class="rec_item"]/a/@href').extract():
mo = self.recommendRegex.search(recommend)
recommendId = mo.group(1)
link = "http://www.imdb.com/title/" + recommendId
print(link)
yield scrapy.Request(link, callback=self.parse, dont_filter=True)
enter code here
但是......如果 dont_filter = False ,我不知道为什么不调用Request回调。 文档说:
如果要多次执行相同的请求,则使用此选项,以忽略重复过滤器。小心使用它,否则你会进入爬行循环。
但我不是要求相同的网址。这里发生了什么?
谢谢朋友们!
答案 0 :(得分:0)
这是常见的朋友问题:
就你的情况而言,它是关于电影的:
当你在寻找建议时,它必然会在电影中重复几次。最好的方法是将电影数据保存到数据库中,并通过其ID提供建议。