python - Python - 抓取 IMDb 网站时出现 XPath 问题
问题描述
我正在尝试使用 Python 在 IMDb 上抓取电影,我可以获得有关除演员姓名之外的所有重要方面的数据。
这是我正在处理的示例 URL:
https://www.imdb.com/title/tt0106464/
使用“检查”浏览器功能,我找到了与所有参与者名称相关的 XPath,但是当在 Python 上运行代码时,看起来 XPath 无效(不返回任何内容)。
这是我正在使用的代码的简单版本:
import requests
from lxml import html
movie_to_scrape = "https://www.imdb.com/title/tt0106464"
timeout_time = 5
IMDb_html = requests.get(movie_to_scrape, timeout=timeout_time)
doc = html.fromstring(IMDb_html.text)
actors = doc.xpath('//table[@class="cast_list"]//tbody//tr//td[not(contains(@class,"primary_photo"))]//a/text()')
print(actors)
我尝试多次更改 XPath,试图使其更通用,然后更具体,但它仍然没有返回任何内容
解决方案
不要盲目地接受你看到的使用inspect element
.
浏览器非常宽松,并会尝试修复源代码中的任何标记问题。
话虽如此,如果您检查源代码,view source
您可以看到您要抓取的表没有<tbody>
,因为它们是由浏览器插入的。
因此,如果您从此处删除它
//table[@class="cast_list"]//tbody//tr//td[not(contains(@class,"primary_photo"))]//a/text()
->//table[@class="cast_list"]//tr//td[not(contains(@class,"primary_photo"))]//a/text()
您的查询应该可以工作。
推荐阅读
- javascript - 如何在将 tdbinput(数据库)查询到全局变量后捕获列的结果以供以后在 talend 中使用
- deployment - 如何在部署管道期间启动 Gatsby eslinting
- excel - CountIfs 函数的地址中的返回地址/信息?
- r - 在 R 中,如何计算虚拟变量 =1 的实例?
- powershell - 使用 PowerShell 创建注册表项:自定义对象、注册表对象还是单独的语句?
- github - 如何在我的存储库上启用 GitHub 讨论?
- function - 是否可以从 sed 内部将反向引用传递给函数?
- c++ - 如何将 imgui 集成到 SDL2 + OpenGL 项目中
- c++ - 为什么这个 std::function 和 operator 会导致分段错误?
- python - 在 macbook pro M1 上使用 Tensorflow 时出现“zsh:非法硬件指令 python”