我scrapy
用来屏蔽网站上的数据.但是,我想要的数据不在html本身内部,而是来自javascript.所以,我的问题是:
如何获取此类案例的值(文本值)?
这是我试图筛选的网站:https: //www.mcdonalds.com.sg/locate-us/
我想要的属性:地址,联系方式,营业时间.
如果您在Chrome浏览器中执行"右键单击","查看源代码",您将看到HTML中无法使用此类值.
编辑
Sry paul,我做了你告诉我的事情,找到admin-ajax.php
并看到了身体但是,我现在真的被困住了.
如何从json对象中检索值并将其存储到我自己的变量字段中?如果您可以分享如何为公众和刚刚开始scrapy的人分享一个属性,那将是一件好事.
到目前为止,这是我的代码
Items.py
class McDonaldsItem(Item):
name = Field()
address = Field()
postal = Field()
hours = Field()
Run Code Online (Sandbox Code Playgroud)
McDonalds.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)
Run Code Online (Sandbox Code Playgroud)
Sry进行长时间编辑,简而言之,我如何将json值存储到我的属性中?例如
***项目['地址'] =*如何检索****
PS,不确定这是否有帮助,但是,我使用cmd行运行这些脚本
scrapy crawl mcdonalds -o McDonalds.json -t json(将我的所有数据保存到json文件中)
我不能强调我的感激之情.我知道问你这个是不合理的,即使你没有时间这个也完全没问题.
包含我的数据的代码:
<div id="content"><!-- InstanceBeginEditable name="EditRegion3" -->
<div id="content_div">
<div class="title" id="content_title_div"><img src="img/banner_outlets.jpg" width="920" height="157" alt="Outlets" /></div>
<div id="menu_list">
<table border="0" cellpadding="5" cellspacing="5" width="100%">
<tbody>
<tr>
<td valign="top">
<p>
<span class="foodTitle">Century Square</span><br />
2 Tampines Central 5<br />
#01-44-47 Century Square<br />
Singapore 529509</p>
<p>
<br />
<strong>Opening Hours:</strong><br />
7am to 12am (Sun-Thu & PH)<br />
24 Hours (Fri & Sat &</p>
<p>
Eve of PH)<br />
Telephone: 6789 0457</p>
</td>
<td valign="top">
<img alt="Century Square" src="/assets/images/outlets/century_sq.jpg" style="width: 260px; height: 140px" /></td> …
Run Code Online (Sandbox Code Playgroud)