我正在使用scrapy
从网站筛选数据。但是,我想要的数据不在 html 本身中,而是来自 javascript。所以,我的问题是:
如何获取此类案例的值(文本值)?
这是我要筛选的网站: https ://www.mcdonalds.com.sg/locate-us/
我要获取的属性:地址、联系方式、营业时间。
如果您在 chrome 浏览器中执行“右键单击”、“查看源代码”,您将看到这些值本身在 HTML 中不可用。
编辑
抱歉,保罗,我照你说的做了,找到admin-ajax.php
并看到了尸体,但是,我现在真的被困住了。
如何从 json 对象中检索值并将其存储到我自己的变量字段中?如果你能分享如何为公众和那些刚开始使用scrapy的人只做一个属性,那就太好了。
到目前为止,这是我的代码
项目.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)
抱歉长时间编辑,简而言之,我如何将 json 值存储到我的属性中?例如
***item['address'] = * 如何检索 ****
PS,不确定这是否有帮助,但是,我在 cmd 行上运行这些脚本使用
scrapy crawl mcdonalds -o McDonalds.json -t json (将我所有的数据保存到一个 json 文件中)
我对我的感激之情怎么强调都不为过。我知道问你这个有点不合理,即使你没有时间也完全可以。