我在这个网站上爬行,https://www.ntuh.gov.tw/labmed/檢驗目錄/Lists/2015/BC.aspx。它是一个aspx,所以我计划使用selenium
在同一个url中获取表的多个页面。但是,即使我相信我使用的是正确的xpath,我也无法提取表。你知道吗
import requests
from selenium import webdriver
from time import sleep
from lxml import etree, html
url = "https://www.ntuh.gov.tw/labmed/檢驗目錄/Lists/2015/BC.aspx"
browser = webdriver.Chrome()
browser.get(url)
# The url is visited with Chrome correctly
root = etree.fromstring(browser.page_source, etree.HTMLParser())
root.xpath("//table[@class='ms-listviewtable']/tr")
# It gives me [] while browser.page_source is a string of html
尽管如此,我仍然可以使用完全相同的xpath来成功地获取(部分)数据——只是只能对表的第一页上的信息进行爬网,这是不需要的。你知道吗
result = ""
while result == "":
try:
# Certificate is not verified to bypass the SSLError
# Not secure though
result = requests.get(url, verify = False)
break
except:
sleep(5)
continue
# Transform it into an element tree
root = etree.fromstring(result.content, etree.HTMLParser())
# Parse the information with Xpath
root.xpath("//table[@class='ms-listviewtable']/tr")
# It gives me many elements of tr tags
为什么会这样?我该怎么解决?你知道吗
我能够在浏览器中成功地运行以下命令来检索第一页和第二页上的表
$x("//table[@class='ms-listviewtable']//tr")
唯一的区别是我有双
//tr
和你的单/tr
单个
/
失败,因为tr
不是table
元素的直接子元素您可以在这里阅读Xpath:https://devhints.io/xpath
相关问题 更多 >
编程相关推荐