我想在下面的网站上按硒选择联系方式 http://buyersguide.recyclingtoday.com/search。 为了正确匹配正确的信息,我想先选择行,然后从行中选择信息。简单的代码如下,现在我的问题是如何从每一行中选择信息,例如公司名称,电子邮件。
代码:
/sent
运行以下代码作为答案,但我仍然遇到问题?
from time import sleep
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException
import pandas as pd
driver = webdriver.Chrome('D:\chromedriver_win32\chromedriver.exe')
driver.get('http://buyersguide.recyclingtoday.com/search')
rows = driver.find_elements_by_xpath('//*[@id="Body_tbl"]/tbody/tr')
for row in rows:
email = row.find_element_by_xpath('//*/tr/td[3]/a').text
company=row.find_element_by_xpath('//*/tr/td[1]').text
未选择内容
答案 0 :(得分:2)
您可以获取诸如
之类的详细信息您必须在没有表头的情况下找到表中可用的行数,
根据您的HTML,这是示例。
使用Python的示例:
rows = driver.find_elements_by_xpath("//td[@style='font-weight:bold;']//parent::tr")
for row in rows:
company=row.find_element_by_xpath('./td[1]').text
address = row.find_element_by_xpath('./td[2]').text
contact= row.find_element_by_xpath('./td[3]//a').text
number= row.find_element_by_xpath('./td[5]').text
使用Java的示例:
List<WebElement> findData = driver.findElements("//td[@style='font-weight:bold;']//parent::tr");
for (WebElement webElement : findData) {
String getValueofCompany = webElement.findElement(By.xpath("./td[1]")).getText();
String getValueofAddress = webElement.findElement(By.xpath("./td[2]")).getText();
String getValueofContact = webElement.findElement(By.xpath("./td[3]//a")).getText();
String getValueofPhoneNumber = webElement.findElement(By.xpath("./td[5]")).getText();
}
答案 1 :(得分:1)
您可以使用以下内容:
for row in rows:
email = row.find_element_by_xpath('.//td[3]/a').text
company = row.find_element_by_xpath('.//td[1]').text
答案 2 :(得分:1)
您想要的数据始于
tr[3]//td[1]
-包含公司名称作为文本
tr[3]//td[3]
-包含电子邮件,但具有href属性
因此,tr
的循环从索引3开始到rows
WebElement的长度
rows = driver.find_elements_by_xpath('//*[@id="Body_tbl"]/tbody/tr')
for index, element in enumerate(rows,start=2):
companyName = rows.find_element_by_xpath("//tr[" + index + "]//td[1]")
if companyName is not None:
companyName.getText();
companyEmail = driver.find_element_by_xpath("//tr[" + index + "]//td[3]/a")
if companyEmail is not None:
companyEmail.get_attribute("href"); // this will give exact if email is there
注意-我无法测试代码,请注意边界条件。谢谢