【发布时间】:2021-10-10 12:16:29
【问题描述】:
我正在尝试从 leboncoin 中抓取一些关于汽车的信息。
我使用 jupyter notebook 来克服 Datadome。这是我的第一个单元格:
import pandas as pd
import numpy as np
import time
import random
from selenium import webdriver
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
PATH = "chromedriver.exe"
options = webdriver.ChromeOptions()
options.add_argument("--disable-gpu")
options.add_argument('enable-logging')
options.add_argument("start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=options, executable_path=PATH)
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.53 Safari/537.36'})
url = 'https://www.leboncoin.fr/voitures/offres'
driver.get(url)
在这里我手动切换以绕过机器人测试并运行它:
cookie = driver.find_element_by_xpath('//*[@id="didomi-notice-agree-button"]')
try:
cookie.click()
except:
pass
time.sleep(2)
car = driver.find_element_by_xpath('//input[@autocomplete="search-keyword-suggestions"]')
car.click()
car.send_keys('Peugeot')
car.send_keys(Keys.ENTER)
time.sleep(3)
然后,我运行这个:
next = driver.find_element_by_xpath('//a[@title="Page suivante"]')
for x in range(2):
time.sleep(3)
links = driver.find_elements_by_class_name("styles_adCard__2YFTi")
for l in links:
data = l.text
print(data)
print()
next = driver.find_element_by_xpath('//a[@title="Page suivante"]')
next.click()
time.sleep(3)
不幸的是,我找不到如何创建合适的数据帧,这是因为我想要的所有对象的 html 结构都是相同的,所以我无法将它们清楚地分开。
我得到了类似的东西:
5
Peugeot 2008 1,6l Blue-HDI 92cv à 7800e (Ann2015/Toit panoramique)
PRO
7 500 €
Année
2015
Kilométrage
100000 km
Carburant
Diesel
Boîte de vitesse
Manuelle
Baie-Mahault 97122
5
PEUGEOT 206 1.4 i 75 CV XR PRESENCE
PRO
3 990 €
Année
2002
Kilométrage
104152 km
Carburant
Essence
Boîte de vitesse
Manuelle
Châtellerault 86100
我想要某种数据框,类似这样的:
通常我可以解决这个问题,但通常情况下,每个元素的 html 结构都不同,这里都是一样的,所以我有点迷茫。
【问题讨论】:
标签: python python-3.x dataframe selenium web-scraping