python - 使用 xpath 获取特定键的所有值(python 网络抓取)
问题描述
假设我们有网页
<div class="specific-row" data-id="101736782"></div>
<div class="yellow-box-row" data-id="112376244"></div>
<div class="specific-row" data-id="179218312"></div>
<div class="vip-row" data-id="123749014"></div>
如何获取所有数据 ID值?喜欢 ['101736782', '112376244', '179218312', '123749014']
我使用了 tree.xpath
import requests
from lxml import html
r = requests.get(url)
tree = html.fromstring(r.content)
tree.xpath("//div@data-id=['any']")
解决方案
我试试这个...
from lxml import etree, html
doc = '<root><div class="specific-row" data-id="101736782"></div><div class="yellow-box-row" data-id="112376244"></div><div class="specific-row" data-id="179218312"></div><div class="vip-row" data-id="123749014"></div></root>'
root = etree.XML(doc) # EQUALS TO >>> root = html.fromstring(doc)
xpatheval = etree.XPathEvaluator(root)
divs = xpatheval('//div')
ids = [el.get('data-id') for el in divs]
## If you have installed cssselect you can do
divs = root.cssselect('[data-id]')
ids = [el.get('data-id') for el in divs]
# (cssselect) use the same schema of selection of 'some_element_node.querySelector("data-id")' of browsers
# Maybe this is what you are looking for -- https://lxml.de/tutorial.html#elementpath
root.findall('div[@data-id]')
我使用此链接来帮助我。
推荐阅读
- machine-learning - 如何将包含标记句子的文本输入神经网络?
- swift - 在swift中使用特殊字符分隔给定的字符串
- regex - 使用正则表达式的街道和数字格式:切换各种数字格式的顺序(例如 0-9 或 0-9a-z 或 0-9-0-9a-z),然后是文本
- c++ - 类函数不会永久更改成员变量
- javascript - 石头剪刀布游戏(js) - 如何创建一个圆形功能
- html - 提供用户选项以通过按钮将评估的 Google 脚本 html 模板下载为 pdf
- android - 问题:发现现有项目依赖项中的不一致。之间的版本不兼容: - com.google.firebase:firebase-auth:19.0.0@aar
- python - 我想在 python 中制作 3*3 矩阵格式列表
- typescript - 如何获取我的 npm 模块的 JSdoc 文档,以便在用户的 VScode 中显示函数?
- swift - 如何使用 Swift 获取 DispatchIO 的文件描述符?