python - 如何从 URL 列表中获取属性('innerHTML') - Selenium?
问题描述
我在 Python 中使用 Selenium 进行网页抓取。我正在使用 xpath 来提取网站的部分内容。
我想知道如何使用循环提取 URL 列表并将它们保存到字典中。
mylist_URLs = ['https://www.sec.gov/cgi-bin/own-disp? action=getowner&CIK=0001560258',
'https://www.sec.gov/cgi-bin/own-disp?action=getissuer&CIK=0000034088',
'https://www.sec.gov/cgi-bin/own-disp?action=getissuer&CIK=0001048911']
我下面的编码仅适用于 1 个网址...
driver = webdriver.Chrome(r'xxx\chromedriver.exe')
driver.get('https://www.sec.gov/cgi-bin/own-disp?action=getowner&CIK=0000104169')
driver.find_elements_by_xpath('/html/body/div/table[1]/tbody/tr[2]/td/table/tbody/tr[1]/td')[0].get_attribute('innerHTML')
感谢您的帮助。
解决方案
您可以对每个循环使用简单的 WebDriverWait 来确保在获取 innerHTML 之前加载表。
添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
脚本:
mylist_URLs = ['https://www.sec.gov/cgi-bin/own-disp? action=getowner&CIK=0001560258',
'https://www.sec.gov/cgi-bin/own-disp?action=getissuer&CIK=0000034088',
'https://www.sec.gov/cgi-bin/own-disp?action=getissuer&CIK=0001048911']
# open the browser
driver = webdriver.Chrome(r'xxx\chromedriver.exe')
# iterate through all the urls
for url in mylist_URLs:
print(url)
driver.get(url)
# wait for the table to present
element = WebDriverWait(driver,30).until(EC.presence_of_element_located((By.XPATH, "(//table[1]/tbody/tr[2]/td/table/tbody/tr[1]/td)[1]"))
# now get the element innerHTML
print(element.get_attribute('innerHTML')))
推荐阅读
- java - Javafx文本区域滚动窗格边框颜色问题
- javascript - 如何在 Jasmine 中将单元测试写入嵌套函数
- apache-kafka - 远程查找 Kafka 版本
- android - Mockito:验证 Mocked 方法不起作用
- python-3.x - 通过 API 从 Jira 获取自定义字段选项列表
- c# - 以另一种形式存储数据保护问题
- haskell - Data.Text 的一元折叠
- sql-server - sql server错误中的aioodbc问号
- excel - Excel - 下标超出范围
- javascript - 使用 vis.js 的时间轴组中所有项目的高度相同