【发布时间】:2019-08-09 09:00:58
【问题描述】:
我在 python 和 selenium 中创建了一个脚本来解析网站中可用表中的三个字段 franking credit、gross divident 和 further information。只有当浏览器点击带有加号的黄色圆形按钮时,最后两个字段才会显示。
但是,当单击按钮时,它们会变成红色,表示信息已显示。
我的脚本可以点击所有按钮,但无法从该表中抓取三个字段。
我附上了一张图片,向您展示它的真实外观。
我知道如果我向 https://www.sharedividends.com.au/wp-content/custom/ajaxfile.php?code=MLT 发送带有相关负载的 post http 请求,我可以获取 json 中的所有表格字段,但这不是我想要解决的方法。
我试过了:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
url = "https://www.sharedividends.com.au/mlt-dividend-history/"
driver = webdriver.Chrome()
driver.get(url)
table = driver.find_element_by_css_selector("#divTable")
driver.execute_script("arguments[0].scrollIntoView();",table)
for items in driver.find_elements_by_css_selector("td.sorting_1"):
driver.execute_script("arguments[0].scrollIntoView();",items)
items.click()
for elems in driver.find_elements_by_css_selector("#divTable tbody tr"):
franking_credit = elems.find_elements_by_css_selector("td")[5].text
gross_divident = elems.find_elements_by_css_selector("td")[6].text
further_info = elems.find_elements_by_css_selector("td")[7].text
print(franking_credit,gross_divident,further_info)
driver.quit()
当我运行上面的脚本时,它会抛出这个错误 IndexError: list index out of range 指向 franking_credit = 这一行。
这就是这张桌子的样子。我已在下图中的该表中标记了我感兴趣的三个字段。
如何解析该表中的三个字段?
【问题讨论】:
标签: python python-3.x selenium selenium-webdriver web-scraping