【发布时间】:2020-08-31 10:38:44
【问题描述】:
我尝试对以下网站的 500 名或更多员工的所有公司名称进行网络抓取:
我编写了一个代码来抓取第一个站点的公司名称,然后脚本将单击“下一个站点按钮”并再次抓取名称。这些名字将被保存到一个列表中,直到列表中有一定数量的名字。然后它将列表传输到数据框并将其导出到 xslfile。不幸的是,它目前不这样做。这是代码
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
import pandas as pd
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
company_list = []
driver = webdriver.Chrome('/Users/rieder/Anaconda3/chromedriver_win32/chromedriver.exe')
driver.get('https://de.statista.com/companydb/suche?idCountry=276&idBranch=0&revenueFrom=-1000000000000000000&revenueTo=1000000000000000000&employeesFrom=500&employeesTo=100000000&sortMethod=revenueDesc&p=1')
driver.find_element_by_id("cookiesNotificationConfirm").click();
while len(company_list) < 20:
company_name = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//table[@class='zebraTable zebraTable--companies']//following::tr[2]/td[@class='zebraTable__td zebraTable__td--companyName']/a"))).get_attribute("innerHTML")
for p in range(len(company_name)):
company_list.append(company_name)
driver.find_element_by_xpath("//*[@id='content']/section[3]/div/div/form/div/div[2]/div[2]/div[2]/div/button[2]").click();
print(company_list)
df = pd.DataFrame(company_list,columns =['Unternehmensname'])
df.to_excel("output.xlsx")
time.sleep(5)
我的输出如下所示:
['\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ', '\n Progress-Werk Oberkirch AG\n ']
我认为这是因为 .get_attribute() 只获取一个属性,但我不知道此时如何获取所有属性。
inb4 谢谢
【问题讨论】:
-
您想要列出所有属性还是所有公司?
-
我想列出所有公司名称
-
请检查下面的答案。
标签: python html selenium web-scraping