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的工作方式。可以通过设置更改并发性(同时连接)。