html - 使用 scrapy 和 xpath 在 ::before 和 ::after 之间抓取 HTML 元素
问题描述
我正在尝试使用scrapy和xpath从python中的网页中抓取一些链接,但是我要抓取的元素在::before和::after之间,所以xpath看不到它们,因为它们在HTML中不存在但是用javascript动态创建。有没有办法刮掉这些元素?
::before
<div class="well-white">...</div>
<div class="well-white">...</div>
<div class="well-white">...</div>
::after
解决方案
我无法复制您的确切文档状态。
但是,如果您加载页面,您会看到一些模板语言以与您的示例数据相同的格式加载:
此外,如果您检查 XHR 网络检查器,您可以看到一些针对 json 数据的 AJAX 请求正在发出:
因此,您可以在此处以方便的 json 格式下载您正在寻找的全部数据:
http://ec.europa.eu/research/participants/portal/data/call/amif/amif_topics.json
scrapy shell "http://ec.europa.eu/research/participants/portal/data/call/amif/amif_topics.json"
> import json
> data = json.loads(response.body_as_unicode())
> data['topicData']['Topics'][0]
{'topicId': 1259874, 'ccm2Id': 31081390, 'subCallId': 910867, ...
推荐阅读
- python - scrapy spider 中的 2 个函数和第二个未运行
- visual-studio - 表达式必须具有指向对象的类型 - 我该怎么办?
- javascript - 谁能告诉我为什么我的最后两个 if else 语句不起作用?全新的 JavaScript 在这里
- python - 使用 python beautifulsoup 从 html 中获取指定值
- userscripts - 如何将本地 CSS 文件加载到特定站点
- c++ - 迷宫构造器问题 [线程 1:EXC_BAD_ACCESS(代码=1,地址=0x8)]
- reactjs - 构建 React 应用程序时是否需要包含节点模块?
- reactjs - React SPA 在开发机器上工作,但只有一级路由在 Azure 上工作
- javascript - Mongoose 仅按时间排序日期
- c# - SignalR 核心集线器连接 lambda 动作