首页 > 解决方案 > 抓取列表问题

问题描述

我正在尝试在 python 中使用 selenium 抓取一些数据,我的代码运行正常,但我遇到了这个特定网页的问题,问题是我没有为每个业务设置一个固定值(例如:19CENT86 有 3 个证明,而 2AJM 有 1 个,而 2G2M 有 5 个)我知道我需要编写一个 XPath 来在一个列表中获取所有业务名称和证明。然后在迭代时,我必须识别并使用企业名称,直到企业名称发生变化,但我不知道如何实现这一点,我可能需要一些帮助,我刚刚开始使用 python

这是我的代码:

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.select import Select
import time
with open('scraping_5.csv', 'w') as file:
    file.write("business_names, attestation, town_pc, region")
driver = webdriver.Chrome(ChromeDriverManager().install())  # initialise chrome driver
driver.get(
    'https://www.cci.fr/agent-immobilier?company_name=agences%20immobili%C3%A8res%20&brand_name=&siren=&numero_carte=&code_region=84&city=&code_postal=&person_name=&state_recherche=1&name_region=AUVERGNE-RHONE-ALPES')

driver.maximize_window()
time.sleep(1)
agences_recherche = driver.find_element_by_id('edit-company-name')
# agences_recherche.send_keys('agences immobilières')
time.sleep(1)
region = driver.find_element_by_id('edit-code-region')
# region.send_heys('AUVERGNE-RHONE-ALPES')
time.sleep(1)
search = driver.find_element_by_xpath('//input[@value="Rechercher"]')
time.sleep(1)
business_names = driver.find_elements_by_xpath('//td[@class="titre_entreprise"]')
# driver.execute_script("arguments[0].click();", business_names)
attestation = driver.find_elements_by_xpath('//tr[@class="lien-fiche"]/td/a')
# driver.execute_script("arguments[0].click();", attestation)
town_pc = driver.find_elements_by_xpath('//*[@id="main-content"]/div/table/tbody/tr/td[2]')
# driver.execute_script("arguments[0].click();", town_pc)
region = driver.find_elements_by_xpath('//*[@id="main-content"]/div/table/tbody/tr/td[3]')
# driver.execute_script("arguments[0].click();", region)

with open('scraping_5.csv', 'w') as file:
    for i in range(len(business_names)):
        file.write(
            business_names[i].text + ";" + attestation[i].text + ";" + town_pc[i].text + ";" + region[i].text + "\n")

标签: pythonseleniumscreen-scraping

解决方案


推荐阅读