1
okface 2018-03-20 00:10:19 +08:00 via Android
第二个 xpath 的是异步加载的吧,你可以看下爬下来的 html 和网页源代码是否相同
|
2
Leigg 2018-03-20 00:21:47 +08:00 via iPhone
在原网页中右键查看源码,然后搜索你要查找元素的标签名或者字符串,仔细对比有没有,如果没有就表示是异步加载,也就是常说的 ajax 技术,需要用浏览器 f12 调试找出对应的 js 请求链接,再去请求该链接,就能拿到数据,,我也是刚忙完
|
4
vincenth520 2018-03-20 09:37:01 +08:00
因为是用 js 生成的元素
|
5
xpresslink 2018-03-20 10:13:18 +08:00
data = requests.get(url).text
加个参数 data = requests.get(url, stream=True).text |
6
Hopetree 2018-03-20 11:03:37 +08:00
你自己去看源代码,然后分别搜索你的这两个 ID,第一个是能搜索到的,第二个搜不到,说明源代码中根本没有这个 ID
|
7
ennisk OP @xpresslink 加参数结果一样
找到 ajax 的请求链接拿到的数据 try{window.&( 热搜数据的 json );}catch(e){} 是这样的格式,用 python 自带的 json 解析不了 |
8
xpresslink 2018-03-21 11:12:24 +08:00
实际上数据请求时已经一次性取回来了,只不过是封装成 json 被传到 js 脚本里,然后再渲染的。
mport requests import re url = 'http://s.weibo.com/top/summary' data = requests.get(url).text result = re.findall(r'realtimehot\\">(.*?)(?=<\\/a>)', data) for item in result: print(item.encode('ascii').decode('unicode-escape')) 偶遇李沁 1 秒睡着睡眠质量差 男方家里买来这样的家具 化妆品重金属锑超标 金毛患哮喘主人陪散步 发错信息还被回复 合肥奶奶台湾爷爷 朱亚文承认二胎 窃贼与失主同名同姓住同村 蛟龙突击队押解海盗 机智撩妹救下轻生女孩 全班只有一个男生 网约车打到兰博基尼 韩东君王文也否认恋情 卫生纸变占座神器 厦门这家餐厅只卖煮泡面 胸罩内藏十公斤黄金 泰剧天生一对 陌上花开燕子归 兰博新皮肤 你的睡眠合格吗 惠若琪公布恋情 3unshine 新剧停拍 歌手 声明 五大最壮观的自然景象 脸皮厚的人更长寿 朱正廷公司声明 荔枝味的吻 理想中的婚后生活 将卧室改成温馨病房 彭于晏 蔡徐坤 repo 寄 iPhone 签收 5 坨铁 春分 张一山 王俊凯 猫住二楼 狗住一楼 #异地恋甜蜜的细节# 男生想象的女孩子生活 热门面部修容 妊娠纹 惠若琪身高 胡杏儿叶璇 卖房照顾痴呆母亲 20 年 因哭泣被赶下飞机 熊猫养成必经之路 春分竖蛋 小哥雨夜背老人上摆渡车 李泽钜 戴其冠承其重 踏青赏花 |
9
ennisk OP @xpresslink 感谢 这种情况就无法用 xpath 解析得用正则是吗?
|