想用 xpath 抓取一件商品的价格,总是空值,后来发现原来获取的 html 里 价格元素是空的。。
比如 chrome http://item.jd.com/1583935.html 价格片段审查元素是:
<strong class="p-price" id="jd-price">¥ 6999.00</strong>
在 python 中,用 requests 获取网页:
page = requests.get("http://item.jd.com/1583935.html")
page.text
价格片段 却是 <strong class="p-price" id="jd-price"></strong>
用 urllib 包也是一样结果,求解惑
1
pythoner 2015-10-15 17:10:10 +08:00 2
js 异步加载的。
爬手机版(wap)吧,基本信息都有 |
2
kungfuchicken 2015-10-15 17:10:15 +08:00 2
因为价格是 JS 加上去的,并不是直接生成在 HTML 里面的
|
3
kchum 2015-10-15 17:10:17 +08:00 3
价格是 ajax 请求出来的,你查看源代码看 <strong class="p-price" id="jd-price"> 会看到页面代码是空的。
|
4
hokohuang OP 明白了!又找到新线索了。。我还是太菜了,谢谢楼上大神!
|
5
rockivy 2015-10-15 17:22:30 +08:00 1
之前写过一个小代码段,用来获取 JD 价格的,使用 selenium(也可以用 phantomjs)解析了页面, 拿到了价格数据. 代码是 py 的, 不过可以很简单地用其他语言实现, 可以参考下:
https://github.com/rocky1001/UrlCrawler/blob/master/price_crawler/selenium_price_crawler.py |
6
tigerstudent 2015-10-15 18:38:07 +08:00
以前爬过京东的产品内容,价格、产品名、图片链接等都在网页头里面的 JS 里
|
7
ClutchBear 2015-10-15 20:40:03 +08:00 1
|
8
ClutchBear 2015-10-15 20:53:40 +08:00
http://p.3.cn/prices/mgets?skuIds=J_1583935
得到的 json 数据是[{id:J_1583935,p:6999.00, m:9999.00}] |
9
Zzzzzzzzz 2015-10-15 20:57:05 +08:00
要爬得爬好几个渠道, 京东网页、 app 、 微信、手 Q 、 wap 页很多产品价格都是不一样的.
|
10
grimpil 2017-02-05 11:01:01 +08:00
@ClutchBear
刚看到你提供的这个,不过现在返回的 json 数据变成下面这样: [{"id":"J_652352","p":"259.00","m":"299.00","op":"259.00"}] 请教 op 和 m 这两项具体指什么? |