使用 Scrapy 从延迟加载内容中提取图像源
Extract image source from lazy loading content with Scrapy
我正在尝试使用 Scrapy 提取 src img 标签的值。
例如:
<img src="https://media.rightmove.co.uk/map/_generate?width=768&height=347&zoomLevel=15&latitude=53.803485&longitude=-1.561766&signature=rq2YsiaRQTXqZ2ilgvbFF3fdWfU=" alt="Property location on the map" loading="lazy">
我想提取 URL:
https://media.rightmove.co.uk/map/_generate?width=768&height=347&zoomLevel=15&latitude=53.803485&longitude=-1.561766&signature=rq2YsiaRQTXqZ2ilgvbFF3fdWfU=
当我查看从 scrapy shell 返回的 Chrome 中的响应时,我可以看到我想要(通过开发人员工具)提取的数据,但是当我尝试使用 XPath 提取它时returns 没有。
例如
response.xpath("""//*[@id="root"]/div/div[3]/main/div[15]/div/a/img""").get()
我猜 loading="lazy"
与此有关,但是,从 scrapy 返回的响应显示了我在浏览器中查看时想要的数据(禁用 javascript)。
重现步骤:
$ scrapy shell https://www.rightmove.co.uk/properties/91448747#/
$ view(response)
有人知道如何从地图中提取 URL 吗?我有兴趣这样做以提取 属性.
的经纬度
这个HTML标签是在浏览器打开页面时由一些JS生成的。使用 view(response)
检查时,我建议在 devtools/Network
选项卡中将选项卡设置为 Offline
并重新加载页面。
这将阻止选项卡下载其他内容,就像 scrapy shell 一样。确实,这样做之后我们可以看到此时这个标签是不存在的
但是这些数据似乎在其中一个脚本标签上可用。您可以检查它执行以下命令。
$ scrapy shell https://www.rightmove.co.uk/properties/91448747#/
import json
jdata = json.loads(response.xpath('//script').re_first('window.PAGE_MODEL = (.*)'))
from pprint import pprint as pp
pp(jdata)
我正在尝试使用 Scrapy 提取 src img 标签的值。
例如:
<img src="https://media.rightmove.co.uk/map/_generate?width=768&height=347&zoomLevel=15&latitude=53.803485&longitude=-1.561766&signature=rq2YsiaRQTXqZ2ilgvbFF3fdWfU=" alt="Property location on the map" loading="lazy">
我想提取 URL:
https://media.rightmove.co.uk/map/_generate?width=768&height=347&zoomLevel=15&latitude=53.803485&longitude=-1.561766&signature=rq2YsiaRQTXqZ2ilgvbFF3fdWfU=
当我查看从 scrapy shell 返回的 Chrome 中的响应时,我可以看到我想要(通过开发人员工具)提取的数据,但是当我尝试使用 XPath 提取它时returns 没有。
例如
response.xpath("""//*[@id="root"]/div/div[3]/main/div[15]/div/a/img""").get()
我猜 loading="lazy"
与此有关,但是,从 scrapy 返回的响应显示了我在浏览器中查看时想要的数据(禁用 javascript)。
重现步骤:
$ scrapy shell https://www.rightmove.co.uk/properties/91448747#/
$ view(response)
有人知道如何从地图中提取 URL 吗?我有兴趣这样做以提取 属性.
的经纬度这个HTML标签是在浏览器打开页面时由一些JS生成的。使用 view(response)
检查时,我建议在 devtools/Network
选项卡中将选项卡设置为 Offline
并重新加载页面。
这将阻止选项卡下载其他内容,就像 scrapy shell 一样。确实,这样做之后我们可以看到此时这个标签是不存在的
但是这些数据似乎在其中一个脚本标签上可用。您可以检查它执行以下命令。
$ scrapy shell https://www.rightmove.co.uk/properties/91448747#/
import json
jdata = json.loads(response.xpath('//script').re_first('window.PAGE_MODEL = (.*)'))
from pprint import pprint as pp
pp(jdata)