首页 > 解决方案 > 如何使用 selenium _scrape_ 来自该网站链接的所有数据并将提取的城市、位置和联系电话保存为 csv 数据框对象?

问题描述

抓取数据 的网站网址http://jawdhabib.co.in/hairandbeautysalons-sl/

代码:

lst = driver.find_element_by_css_selector(".post-17954.page.type-page.status-publish.hentry").text 
for i in lst: 
    driver.implicitly_wait(2) 
    city = driver.find_element_by_css_selector("tr").text     
    salon_address = driver.find_element_by_css_selector("tr").text 
    Contact_number = driver.find_element_by_css_selector("tr").text    
print(lst)

标签: seleniumselenium-webdriverselenium-chromedriver

解决方案


这是您问题的第一部分。从一开始,您需要等待所有元素加载到屏幕上。抓取超出为该位置保留的前 2 个 trs 的所有表 trs。使用 ./ 从 tr xpath 到他们的孩子,并尊重地使用属性('textContent')抓取 td[1-3] 文本。

wait = WebDriverWait(driver, 60)
driver.get("http://jawedhabib.co.in/hairandbeautysalons-sl/")
#driver.maximize_window()
tableValues=wait.until(EC.presence_of_all_elements_located((By.XPATH,"//tbody//tr[position()>2]")))
city=[]
address=[]
contactno=[]
for tr in tableValues:
    #print(tr.get_attribute('textContent'))
    city.append(tr.find_element_by_xpath("./td[1]").get_attribute('textContent'))
    address.append(tr.find_element_by_xpath("./td[2]").get_attribute('textContent'))
    contactno.append(tr.find_element_by_xpath("./td[3]").get_attribute('textContent'))

进口

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC

推荐阅读