如何在javascript网站上使用XPath获取数据?

2024-06-16 14:22:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我想抓取这个新闻网站上的数据。http://www.inquirer.net/

我想在瓷砖上找到新闻标题。在

这是被检查代码的屏幕截图

正如您所看到的,我要抓取的一个标题已经在那里了。当我从浏览器复制xpath时,它返回//*[@id=“tgs3_info”]/h2

我试着运行python代码。在

import lxml.html
import lxml.etree
import requests

link = 'http://www.inquirer.net/'
res = requests.get(link)
r = res.content
html_content = lxml.html.fromstring(r)
root = html_content.xpath('//*[@id="tgs3_info"]/h2')
print(root)

但它返回一个空列表。在

我试图在stackoverflow和互联网上寻找答案。我不太明白。当您查看站点的页面源时。我想要的数据不在javascript函数中。它在div里,所以我不明白为什么我不能抓到数据。我希望我能在这里找到答案。在


Tags: 数据代码importinfoidhttpnethtml
2条回答

输入来自Xurasky的解决方案以避免403错误

import lxml.html
import lxml.etree
from urllib.request import Request, urlopen

req = Request('http://www.inquirer.net/', headers={'User-Agent': 'Mozilla/5.0'})
r = urlopen(req).read()
html_content = lxml.html.fromstring(r)
root = html_content.xpath('//*[@id="tgs3_info"]/h2')
for a in root:
    print(a.text_content())

输出

^{pr2}$

我相信你会得到urllib.error.HTTPError:HTTP错误403:禁止错误。在

您可以使用

import lxml.html
import lxml.etree
from urllib.request import Request, urlopen

req = Request('http://www.inquirer.net/', headers={'User-Agent': 'Mozilla/5.0'})
res = urlopen(req).read()
html_content = lxml.html.fromstring(r)
root = html_content.xpath('//*[@id="tgs3_info"]/h2')
print(root)

相关问题 更多 >