Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.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 shell外部获取新URL并更新响应对象?_Python_Web Scraping_Scrapy - Fatal编程技术网

Python 如何在scrapy shell外部获取新URL并更新响应对象?

Python 如何在scrapy shell外部获取新URL并更新响应对象?,python,web-scraping,scrapy,Python,Web Scraping,Scrapy,使用scrapyshell我可以使用fetch方法来掌握新URL的内容。此方法自动更新response对象,如下代码所示(请参见注释): items=response.css('article')) 对于项目中的i: title=i.css('a[class=“item link”]::text').get() price=i.css('span[class=“item price”]::text').get() rooms=i.css('span[class=“item detail”]::t

使用
scrapyshell
我可以使用
fetch
方法来掌握新URL的内容。此方法自动更新
response
对象,如下代码所示(请参见注释):

items=response.css('article'))
对于项目中的i:
title=i.css('a[class=“item link”]::text').get()
price=i.css('span[class=“item price”]::text').get()
rooms=i.css('span[class=“item detail”]::text').get()
meters=i.css('span[class=“item detail”]:第n个类型(2)::text')。get()
url=response.urljoin(i.css('a[class=“item link”]”)。attrib['href']
获取(url,重定向=False)
#调用fetch()后,将更新响应对象
#我可以获取新的信息
loc=response.xpath('/html/body/script[9]').get()
纬度=re.findall(‘纬度:([-.0-9]+)”,loc)[0]
经度=re.findall('经度:“([-.0-9]+)”,loc)[0]

但是我不知道如何在
scrapy shell
之外使用
Spider
类及其方法做同样的事情。

你完成了吗?是的,但我能想到的唯一解决方案是构建一个新的解析方法,将其调用到
请求
回调中。它工作正常,但不如
fetch
中的好。原因有两个:它将新链接放入队列中,因此我无法以正确的顺序获取信息,此外,我认为,此解决方案会增加所需的连接数,因此我在几次迭代后收到403响应,这在
fetch
中从未发生过。顺序位是Scrapy的工作方式。可以通过设置更改并发性(同时连接)。