Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Python-请求、lmxl和xpath不起作用_Python 3.x_Xpath_Python Requests - Fatal编程技术网

Python 3.x Python-请求、lmxl和xpath不起作用

Python 3.x Python-请求、lmxl和xpath不起作用,python-3.x,xpath,python-requests,Python 3.x,Xpath,Python Requests,我正试图编写一些python来搜索web上的固件/驱动程序更新,但是不同的web页面的响应不同 我使用了请求和lxml包来查找基于xpath的信息。Xpath是通过在chrome中打开URL,右键单击数据并检查它,然后在显示代码并选择copy Xpath时再次右键单击找到的 工作示例 英特尔NUC地址。 2019年12月25日,其正确拾取的数据值为“24.3” 导入请求 从lxml导入html url=”https://downloadcenter.intel.com/product/76977

我正试图编写一些python来搜索web上的固件/驱动程序更新,但是不同的web页面的响应不同

我使用了请求和lxml包来查找基于xpath的信息。Xpath是通过在chrome中打开URL,右键单击数据并检查它,然后在显示代码并选择copy Xpath时再次右键单击找到的

工作示例
英特尔NUC地址。
2019年12月25日,其正确拾取的数据值为“24.3”

导入请求
从lxml导入html
url=”https://downloadcenter.intel.com/product/76977/Intel-NUC-Kit-D54250WYK"
page=请求.get(url)
XpathToFWtype='/*[@id=“搜索结果”]/tbody/tr[1]/td[4]/text()
xpath(XpathToFWtype)
失败示例
对于华硕网站,类似的逻辑也失败了,在那里它应该替换固件文本1.1.2.3_790版本:

失败的xpath从inspect语句返回为:

//*[@id="Manual-Download"]/div[2]/div[2]/div/div/section/div[1]/div[1]span[1]
无论是添加“/text()”还是任何变体,我尝试的一切都失败了。这些网页的不同之处在于“查看源代码”显示的是英特尔url的文本,而不是华硕的文本,因此它是在某个地方动态生成的——但在尝试了几天之后,我不确定下一步该怎么办

导入请求
从lxml导入html
url=”https://www.asus.com/lk/Networking/DSL-AC56U/HelpDesk_BIOS/"
page=请求.get(url)
XpathToFWtype='/*[@id=“手动下载”]/div[2]/div[2]/div/div/section/div[1]/div[1]/span[1]/text()
xpath(XpathToFWtype)
#etc->lxml中的许多回溯错误:-(

感谢您的建议或指导,非常感谢对于
INTEL
网站,您可以执行以下操作:

import requests
from bs4 import BeautifulSoup

r = requests.get(
    "https://downloadcenter.intel.com/product/76977/Intel-NUC-Kit-D54250WYK")
soup = BeautifulSoup(r.text, 'html.parser')

for item in soup.findAll("td", {'class': 'dc-version collapsible-col collapsible1'}):
    item = item.text
    print(item[0:item.find("L")])
输出:

24.3
0054
1.0.0
6.1.9
15.40.41.5058
1.01
1
6.0.1.7982
11.0.6.1194
15.36.28.4332
15.40.13.4331
15.36.26.4294
14.5.0.1081
2.4.2013.711
10.1.1.8
10.0.27
2.4.2013.711
2.4.2013.711
对于
ASUS
网站,它实际上使用
JavaScript
来呈现其内容。因此,您需要使用
Selenium
PhantomJS
。但我已经能够将
XHR
定位到
JSON
API,并通过请求调用它:)

输出:

1.1.2.3_790
1.1.2.3_743
1.1.2.3_674
1.1.2.3_617
1.1.2.3_552
1.1.2.3_502
1.1.2.3_473
您可以从这里解析任何内容:)


似乎你没有意识到华硕网站是通过
JavaScript
加载的,而
请求
模块将无法呈现它,你想检索下载大小吗?这太神奇了,你可以解析所有内容!非常感谢。解释如何得到XHR查询是否过于复杂?@欢迎光临,很乐意为您提供帮助。您可以通过浏览器
developer tools
并通过检查
网络选项卡来获取
XHR
请求。如果您需要截图,请告诉我。非常感谢您的耐心和帮助@ahmed!我找到了
网络选项卡
,然后找到了您标识的
XHR
行。但打开该URL时,JSON数据第1行第1列出现错误
SyntaxError:JSON.parse:unexpected字符
,直到我从URL中删除了最后一个参数,使其与您=>删除的URL中的最终文本相同,即
&callback=supportpdpage
。您知道删除该位仅仅是一种体验吗?@非常欢迎,这叫做
回调
,这是一种非常古老的技术,用于
发送JSON数据,而不必担心跨域问题。
@ahmed非常感谢您的帮助和指导,以了解更多信息,非常感谢
1.1.2.3_790
1.1.2.3_743
1.1.2.3_674
1.1.2.3_617
1.1.2.3_552
1.1.2.3_502
1.1.2.3_473