Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用scrapy刮取具有多个页面的网站_Python_Html_Http_Web Scraping_Scrapy - Fatal编程技术网

Python 如何使用scrapy刮取具有多个页面的网站

Python 如何使用scrapy刮取具有多个页面的网站,python,html,http,web-scraping,scrapy,Python,Html,Http,Web Scraping,Scrapy,我正在尝试使用scrapy刮(有多个页面)。问题是我找不到下一页的URL。 你对如何使用多个页面(使用scrapy)刮取网站有什么想法,或者如何解决我在代码中遇到的错误 我尝试了下面的代码,但不起作用: class AbcdspiderSpider(scrapy.Spider): """ 类文档字符串 """ 名称='abcdspider' 允许的_域=['abcd-terroir.smartrezo.com'] 字母表=列表(string.ascii_小写) url=”https://abcd

我正在尝试使用scrapy刮(有多个页面)。问题是我找不到下一页的URL。 你对如何使用多个页面(使用scrapy)刮取网站有什么想法,或者如何解决我在代码中遇到的错误

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

class AbcdspiderSpider(scrapy.Spider):
"""
类文档字符串
"""
名称='abcdspider'
允许的_域=['abcd-terroir.smartrezo.com']
字母表=列表(string.ascii_小写)
url=”https://abcd-terroir.smartrezo.com/n31-france/annuaireABCD.html?page=1&spe=1&anIDS=31&search="
start_url=[url+字母表中字母对应的字母]
主url=”https://abcd-terroir.smartrezo.com/n31-france/"
爬网\u datetime=str(datetime.datetime.now().strftime(“%Y-%m-%d%H:%m:%S”))
start\u time=datetime.datetime.now()
def解析(自我,响应):
self.crawler.stats.set_值(“开始时间”,self.start_时间)
尝试:
page=response.xpath('//div[@class=“pageStuff”]/span/text()).get()
页面最大=获取数量页面(第页)
对于范围内的索引(最大页数):
producer\u list=response.xpath('//div[@class=“clearfix-encart\u-ann”]/@onclick').getall()
对于生产者列表中的生产者:
link\u producer=self.main\u url+producer
生成scrapy.Request(url=link\u producer,callback=self.parse\u details)
next_page_url=“/annuaireABCD.html?page={}&spe=1&anIDS=31&search=“.format(index)
如果“下一页”url不是“无”:
产生scrapy.Request(response.urljoin(self.main\u url+next\u page\u url))
例外情况除外,如e:
self.crawler.stats.set_值(“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)
range函数需要的是整数值(1,2,3,4等),而不是unicode字符串(“第1/403页” )

我对射程误差的建议是

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

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