gpt4 book ai didi

python - 如何使用scrapy抓取具有多个页面的网站

转载 作者:可可西里 更新时间:2023-11-01 16:31:42 26 4
gpt4 key购买 nike

我正在尝试抓取 this website (有多个页面),使用 scrapy。问题是我找不到下一页 URL。您是否知道如何(使用 scrapy)抓取具有多个页面的网站或如何解决我在代码中遇到的错误?

我尝试了下面的代码,但它不起作用:

class AbcdspiderSpider(scrapy.Spider):
"""
Class docstring
"""
name = 'abcdspider'
allowed_domains = ['abcd-terroir.smartrezo.com']

alphabet = list(string.ascii_lowercase)
url = "https://abcd-terroir.smartrezo.com/n31-france/annuaireABCD.html?page=1&spe=1&anIDS=31&search="
start_urls = [url + letter for letter in alphabet]

main_url = "https://abcd-terroir.smartrezo.com/n31-france/"


crawl_datetime = str(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
start_time = datetime.datetime.now()

def parse(self, response):
self.crawler.stats.set_value("start_time", self.start_time)
try:
page = response.xpath('//div[@class="pageStuff"]/span/text()').get()
page_max = get_num_page(page)

for index in range(page_max):
producer_list = response.xpath('//div[@class="clearfix encart_ann"]/@onclick').getall()
for producer in producer_list:
link_producer = self.main_url + producer
yield scrapy.Request(url=link_producer, callback=self.parse_details)

next_page_url = "/annuaireABCD.html?page={}&spe=1&anIDS=31&search=".format(index)

if next_page_url is not None:
yield scrapy.Request(response.urljoin(self.main_url + next_page_url))

except Exception as e:
self.crawler.stats.set_value("error", e.args)

我收到这个错误:

'error': ('range() integer end argument expected, got unicode.',)

最佳答案

错误在这里:

page = response.xpath('//div[@class="pageStuff"]/span/text()').get()
page_max = get_num_page(page)

范围函数需要一个整数值(1、2、3、4 等)而不是 unicode 字符串('Page 1/403')

我对范围误差的建议是

page = response.xpath('//div[@class="pageStuff"]/span/text()').get().split('/ ')[1]

for index in range(int(page)):
#your actions

关于python - 如何使用scrapy抓取具有多个页面的网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56905178/

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