gpt4 book ai didi

python - scrapy 抓取所有具有此语法的页面

转载 作者:太空宇宙 更新时间:2023-11-03 18:38:03 25 4
gpt4 key购买 nike

我想抓取所有具有此语法的页面

mywebsite/?page=INTEGER

我尝试过这个:

start_urls = ['MyWebsite']
rules = [Rule(SgmlLinkExtractor(allow=['/\?page=\d+']), 'parse')]

但该链接似乎仍然是MyWebsite。所以请问我应该怎么做才能让它明白我想添加 /?page=NumberOfPage ?请问?

编辑

我的意思是我想 __scrape__ 这些页面:
mywebsite/?page=1
mywebsite/?page=2
mywebsite/?page=3
mywebsite/?page=4
mywebsite/?page=5
..
..
..
mywebsite/?page=7677654

我的代码

start_urls = [
'http://example.com/?page=%s' % page for page in xrange(1,100000)
]
def parse(self, response):
sel = Selector(response)
sites = sel.xpath('my xpath')
for site in sites:

DateDifference= site.xpath('xpath for date difference').extract()[0]

if DateDifference.days < 8:
yield Request(Link, meta={'date': Date}, callback = self.crawl)

我想获取最近7天内添加的页面的所有数据。我不知道过去 7 天内添加了多少页面。所以我认为我可以抓取大量页面,比如说 100000,然后我检查 datedifference 是否少于 7 天,如果不是,我想要 yield 我想完全停止爬行。

最佳答案

如果我没猜错的话,您希望抓取所有 7 天以内的页面。一种方法是按顺序跟踪每个页面(假设页面 n°1 是最新的,n°2 比 n°1 旧,n°3 比 n°2 旧......)。

你可以做类似的事情

start_urls = ['mywebsite/?page=1']

def parse(self, response):
sel = Selector(response)
DateDifference= sel.xpath('xpath for date difference').extract()[0]

i = response.meta['index'] if 'index' in response.meta else 1

if DateDifference.days < 8:
yield Request(Link, meta={'date': Date}, callback = self.crawl)
i += 1
yield Request('mywebsite/?page='+str(i), meta={'index':i}, callback=self.parse)

这个想法是按顺序执行parse。如果这是您第一次进入该函数,则 response.meta['index'] 未定义:索引为 1。如果这是我们已经解析另一个页面之后的调用,response.meta['index'] 定义:索引表示当前抓取的页面编号。

关于python - scrapy 抓取所有具有此语法的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21170777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com