为什么 Python 使用xpath爬取网页数据,但返回的结果一直为空?

weixin_41769509 2018-06-20 04:09:22
我在程序里写的代码没有错,但是运行时每次返回爬取的数据都是空列表,但是在终端打一样的代码,却可以获取到结果,这是为什么?而且我在虚拟机是也可以得到结果

源码:

import urllib, urllib.request, urllib.parse
from lxml import etree

url = "https://tieba.baidu.com/f?kw=lol&pn=50"
headers = {"User-Agent": "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50"}
request = urllib.request.Request(url, headers = headers)
html = urllib.request.urlopen(request).read()
content = etree.HTML(html)
link_list = content.xpath("//a[@class='j_th_tit ']/@href")
print(link_list)
...全文
4985 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wudamen 2018-08-30
  • 打赏
  • 举报
回复
有些网站会针对不同操作系统不同浏览器返回不同的源代码,百度贴吧刚好就是一个例子。
程鑫岚 2018-08-30
  • 打赏
  • 举报
回复
不过我没写user-agent 但是有返回内容
程鑫岚 2018-08-30
  • 打赏
  • 举报
回复 1
你好,这几天我也在爬和你一样的东西,只是为什么用soup.find_all()获取的是空列表,而用xpath就可以?尝试几次都是
weixin_41769509 2018-06-21
  • 打赏
  • 举报
回复 1
引用 4 楼 oyljerry 的回复:
[quote=引用 3 楼 weixin_41769509 的回复:]
返回的是网页的源码,这个有测试过

那就是xpath匹配是否正确。逐步排除[/quote]

我在浏览器上已经测试了xpath了,都是没有问题的,而且在ipython中写也是没有问题的,但是就不知道为什么在解析运行时就一直返回一个空列表
oyljerry 2018-06-21
  • 打赏
  • 举报
回复
引用 3 楼 weixin_41769509 的回复:
返回的是网页的源码,这个有测试过

那就是xpath匹配是否正确。逐步排除
weixin_41769509 2018-06-21
  • 打赏
  • 举报
回复 1
我终于找到原因了,原来跟User-Agent 有关系,我换了个User-Agent就OK了,某一些User-Agent返回值一直是个空列表
weixin_41769509 2018-06-20
  • 打赏
  • 举报
回复
返回的是网页的源码,这个有测试过
oyljerry 2018-06-20
  • 打赏
  • 举报
回复
先代码中加点日志等,看看返回的数据是什么,是不是拿到了,然后就是header等是否被检查
weixin_41769509 2018-06-20
  • 打赏
  • 举报
回复
不上一些图来说明一下

这是终端下python或ipython 直接写代码的运行结果


这是写在python脚本语言里解析运行的结果

37,742

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧