Python 爬虫小白尝试简单爬虫时遇到的小疑惑
第一次玩 python, 也是第一次玩爬虫
import requests
from lxml import etree
url = ‘http://s.weibo.com/top/summary’
data = requests.get(url).text
s=etree.HTML(data)
result1 = s.xpath(’//[@id=“pl_common_searchTop”]’)
result2 = s.xpath(’//[@id=“realtimehot”]’)
print(result1)
print(result2)
输出:
[<Element div at 0x10874a888>]
[]
为何 result2 为空?而 result1 能获取到,而且 xpath 一级一级往下获取有时候直接就获取不到对象了,发现在获取不到的前面会有
<!-- xxx -->
这样的注释,是因为这个才获取不到吗?大神求指点,翻来翻去没翻到有这种情况,可能是属于 hello world 级别问题了…
Python 爬虫小白尝试简单爬虫时遇到的小疑惑
第二个 xpath 的是异步加载的吧,你可以看下爬下来的 html 和网页源代码是否相同
在原网页中右键查看源码,然后搜索你要查找元素的标签名或者字符串,仔细对比有没有,如果没有就表示是异步加载,也就是常说的 ajax 技术,需要用浏览器 f12 调试找出对应的 js 请求链接,再去请求该链接,就能拿到数据,,我也是刚忙完
爬下来的的 html 跟网页源代码是一样的
因为是用 js 生成的元素
data = requests.get(url).text
加个参数
data = requests.get(url, stream=True).text
你自己去看源代码,然后分别搜索你的这两个 ID,第一个是能搜索到的,第二个搜不到,说明源代码中根本没有这个 ID
加参数结果一样
找到 ajax 的请求链接拿到的数据
try{window.&( 热搜数据的 json );}catch(e){}
是这样的格式,用 python 自带的 json 解析不了
感谢 这种情况就无法用 xpath 解析得用正则是吗?

