我正在使用^{
如何获取此类情况的值(文本值)?
这是我要筛选的网站: https://www.mcdonalds.com.sg/locate-us/
我试图获得的属性: 地址,联系方式,营业时间。
如果在chrome浏览器中执行“右键单击”和“查看源代码”,您将看到这些值本身在HTML中不可用。
编辑
Sry paul,我照你说的做了,找到了尸体,看到了尸体,但是,我现在真的被卡住了。
如何从json对象中检索值并将其存储到自己的变量字段中?如果你能分享一下如何为公众以及那些刚刚开始发霉的人做一件事,那就太好了。
这是我的密码
项目.py
class McDonaldsItem(Item):
name = Field()
address = Field()
postal = Field()
hours = Field()
麦当劳.py
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
import re
from fastfood.items import McDonaldsItem
class McDonaldSpider(BaseSpider):
name = "mcdonalds"
allowed_domains = ["mcdonalds.com.sg"]
start_urls = ["https://www.mcdonalds.com.sg/locate-us/"]
def parse_json(self, response):
js = json.loads(response.body)
pprint.pprint(js)
Sry用于长编辑,所以简而言之,如何将json值存储到我的属性中?对于eg
***item['address']=*如何检索****
p.S,不确定这是否有用,但是,我在命令行上运行这些脚本
scrapy craw mcdonalds-o mcdonalds.json-t json(将我的所有数据保存到一个json文件中)
我不能过分强调我的感激之情。我知道问你这个有点不合理,即使你没有时间也会没事的。
(我将此发布到了
scrapy-users
邮件列表,但根据Paul的建议,我将其发布在这里,因为它通过shell
命令交互补充了答案。)通常,使用第三方服务呈现某些数据可视化(地图、表格等)的网站必须以某种方式发送数据,并且在大多数情况下,可以从浏览器访问这些数据。
对于这种情况,检查(即浏览浏览器发出的请求)显示数据是从POST请求加载到https://www.mcdonalds.com.sg/wp-admin/admin-ajax.php
所以,基本上你已经准备好了所有你想要的数据,用一个很好的json格式。
Scrapy提供了
shell
命令,在编写spider之前,thinker非常方便地使用该网站:简而言之:在spider中,您必须返回上面的
FormRequest(...)
,然后在回调中从response.body
加载json对象,最后为列表中每个存储的数据创建一个具有所需值的项。像这样的:
在您选择的浏览器中打开https://www.mcdonalds.com.sg/locate-us/时,打开“检查”工具(希望它有一个,例如Chrome或Firefox),并查找“网络”选项卡。
您可以进一步筛选“XHR”(XMLHttpRequest)事件,您将看到一个使用此主体的
POST
请求https://www.mcdonalds.com.sg/wp-admin/admin-ajax.php
对POST请求的响应是一个JSON对象,包含您想要的所有信息
这将输出如下内容:
我让你去提取你想要的田地。
在用Scrapy发送的FormRequest()中,您可能需要添加一个“X-Requested-with:XMLHttpRequest”头(如果您在inspect工具中查看请求头,浏览器将发送该头)
相关问题 更多 >
编程相关推荐