【发布时间】:2017-07-02 07:54:17
【问题描述】:
我在 python 中结合 selenium 编写了一个脚本来从网页中抓取表格。当我运行我的脚本时,它会获取表格。但是,我目前面临的唯一问题是我的刮刀未能解析该表中的“th”标签。我已经在我的脚本中指出了那个“th”标签,供你考虑,它被注释掉了。如何修改该行以获取该表的全部内容?如果我取消注释该行并立即运行,它会捕获以下错误:
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: 'value' must be a string
点击链接可以看到表格元素所在的元素: "https://www.dropbox.com/s/cytp4m0m00dmu2f/Table%20elements.txt?dl=0"
我尝试过的脚本:
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.hko.gov.hk/cis/dailyExtract_e.htm?y=2015&m=1")
time.sleep(5)
table_data = driver.find_element_by_xpath("//table[@id='t1']")
list_rows = []
for items in table_data.find_elements_by_xpath(".//tr"):
list_cells = []
for item in items.find_elements_by_xpath('.//td[@class="td1_normal_class" or @class="td1_year_class"]'):
# for item in items.find_elements_by_xpath(['.//th[@class="td_normal_class"]', './/td[@class="td1_normal_class" or @class="td1_year_class"]']):
list_cells.append(item.text)
list_rows.append(list_cells)
for data in list_rows:
print(data)
driver.quit()
【问题讨论】:
-
你觉得这个
['.//th[@class="td_normal_class"]'应该怎么做?请注意,第一个单引号在方括号内,第二个在外 -
感谢安德森爵士,您的友好回复。有你在循环中总是很高兴。我是故意的。我试图遵循这种模式(['th','td'])。无论如何,如果你仔细看看,我试过这样 - (['.//th[@class="td_normal_class"]', './/td[@class="td1_normal_class" or @class="td1_year_class" ]'])。我上面使用的方括号用于将整个图案包围在其中。再次感谢,先生。
-
你能分享你想要得到的确切输出吗?
-
我想要的输出和现在得到的输出可以在链接之后看到。 "dropbox.com/s/29ujyfsenr8ymf4/tab_data.csv?dl=0"
标签: python-3.x selenium xpath selenium-webdriver web-scraping