【发布时间】:2019-12-25 09:04:49
【问题描述】:
我正在尝试编写一些 python 来抓取网络以获取固件/驱动程序更新,但不同的网页响应不同。
我已经使用 requests 和 lxml 包来查找基于 xpath 的信息。 Xpath 是通过在 chrome 中打开 URL,右键单击数据并检查它,然后在显示代码并选择复制 xpath 时再次右键单击找到的。
工作示例
英特尔 NUC,https://downloadcenter.intel.com/product/76977/Intel-NUC-Kit-D54250WYK。
在 2019 年 12 月 25 日,它正确获取的数据值为“24.3”。
import requests
from lxml import html
url="https://downloadcenter.intel.com/product/76977/Intel-NUC-Kit-D54250WYK"
page = requests.get(url)
XpathToFWtype = '//*[@id="search-results"]/tbody/tr[1]/td[4]/text()'
tree.xpath(XpathToFWtype)
失败的例子
华硕网站的类似逻辑失败,它应该将固件文本 Version 1.1.2.3_790:
https://www.asus.com/lk/Networking/DSL-AC56U/HelpDesk_BIOS/
失败的 xpath 从检查语句返回:
//*[@id="Manual-Download"]/div[2]/div[2]/div/div/section/div[1]/div[1]span[1]
无论我添加“/text()”还是任何变体,我尝试的一切都失败了。这些网页的不同之处在于“查看源代码”显示的是英特尔 url 的文本,而不是华硕的文本,因此它是在某处动态生成的 - 但经过几天的尝试,我不确定接下来要做什么。
import requests
from lxml import html
url="https://www.asus.com/lk/Networking/DSL-AC56U/HelpDesk_BIOS/"
page = requests.get(url)
XpathToFWtype = '//*[@id="Manual-Download"]/div[2]/div[2]/div/div/section/div[1]/div[1]/span[1]/text()'
tree.xpath(XpathToFWtype)
# etc -> many traceback errors from lxml :-(
感谢您的任何建议或指导,非常感谢
【问题讨论】:
-
您似乎不知道
ASUS网站是通过JavaScript加载的,而requests模块将无法呈现它,您是否要检索下载大小?跨度>
标签: python-3.x xpath python-requests