我试图从网站上提取一些信息。我需要点击“a”标签内的链接。我能够找到标签。但是当我试图点击它时。我收到一个名为'NoneType'的错误,该对象不可调用。
from selenium import webdriver
import time
from bs4 import BeautifulSoup
import pandas as pd
browser = webdriver.Chrome()
browser.get("url")
browser.find_element_by_class_name('formButton').click()
soup = BeautifulSoup(browser.page_source, 'html.parser')
embargo = soup.find_all(class_="dataOff")
for row in embargo:
cells = row.find_all("td")
rail = cells[0].get_text().strip()
embargo = cells[1].find_element_by_class_name('dataOff').click()
这是HTML标签,我希望点击美丽的汤。
<table class="dataLiquidTable">
<tr id = "headerRow> .... </tr>
<tr class = "dataOff">
<td> AO </td>
<td> <a href="url"> </a> </td>
代码应单击“a”标记内的链接。
尝试下面的目标第一个孩子a
标签与元素与表dataOff
在表中
browser.find_element_by_css_selector(".dataLiquidTable .dataOff a").click()
看起来你可能想要多个链接,在这种情况下首先尝试并提取链接(希望它们是有效的Urls)
links = [item.get_attribute('href') for item in browser.find_elements_by_css_selector(".dataLiquidTable .dataOff a")]
for link in links:
browser.get(link)
然后,您将使用代码开头的信息加入从这些页面获得的信息。假设返回列表的长度相同。
我不确定
embargo = cells[1].find_element_by_class_name('dataOff').click()
是有效的,因为它正在执行一个动作,但你尝试一个任务。我想你想去一个新的页面。如果你能澄清一下。通过从标签元素中收集链接以根据需要使用,我正在替换该步骤。
否则,您始终可以收集webElements
elems = browser.find_elements_by_css_selector(".dataLiquidTable .dataOff a")