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 Can';在XPath中找不到id为的td节点_Python_Xpath_Python Requests_Web Crawler_Lxml - Fatal编程技术网

Python Can';在XPath中找不到id为的td节点

Python Can';在XPath中找不到id为的td节点,python,xpath,python-requests,web-crawler,lxml,Python,Xpath,Python Requests,Web Crawler,Lxml,是我的目标网页。我的问题是,我无法指定id为的td节点: import requests from lxml import html test_url = "https://www.ntuh.gov.tw/labmed/檢驗目錄/Lists/2015/BC.aspx" page_response = requests.get(test_url, verify=False) page_root = html.fromstring(page_response.content) page_root.

是我的目标网页。我的问题是,我无法指定id为的td节点:

import requests
from lxml import html

test_url = "https://www.ntuh.gov.tw/labmed/檢驗目錄/Lists/2015/BC.aspx"
page_response = requests.get(test_url, verify=False)
page_root = html.fromstring(page_response.content)
page_root.xpath("//td[@id='pagingWPQ2next']/a/@onclick")
最后一行生成
[]
,而该节点实际存在,可以通过
浏览器找到。使用
selenium通过xpath(“//td[@id='pagingWPQ2next']”)查找元素。这是页面底部的“下一页”按钮。可在页面源中找到:

另一个例子是网页

同样,还有一个类似的问题:我不能用id指定td节点,但我可以用id指定一个表,然后在下游找到完全相同的td。此元素也可以在源代码中找到:


为什么会这样?我应该如何正确地找到它?谢谢。

浏览器是否成功导航到中文URL?页面源中不存在分页块,而是动态生成的,因此
请求
+
lxml
不会返回您想要的输出。@ytu,右键单击浏览器页面,然后单击“查看页面源”。您可以在那里搜索所需的元素。如果它在页面源代码中不可用,那么它是动态的,否则,您只需通过
请求
+
lxml
查看DOM的可视化表示即可获取它。这不是源代码。对于具有动态内容的网页,使用Selenium()或Headless Chrome()可以获得更好的结果。
detail_url = "http://www.ntuh.gov.tw/labmed/檢驗目錄/Lists/2015/DispForm.aspx?ID=369&Source=http%3A%2F%2Fwww%2Entuh%2Egov%2Etw%2Flabmed%2F%25E6%25AA%25A2%25E9%25A9%2597%25E7%259B%25AE%25E9%258C%2584%2FLists%2F2015%2FBC%2Easpx&ContentTypeId=0x01003E4C6DCCAFBEF64BACFA9B88DBDEF416"
page_response = requests.get(detail_url, verify=False)
page_root = html.fromstring(page_response.content)
page_root.xpath("//td[@id='_7']/table/tr")
# This line yields []
page_root.xpath("//table[@id='onetIDListForm']/tr/td/div/div/div/div/table/tr[3]/td/table/tr")
# This line gives me trs as expected
# However I thought both lines should work