Я пытаюсь очистить данные из https://www.finishline.com, используя либо Selenium, либо Beautifulsoup 4. До сих пор у меня не получалось, поэтому я обратился за помощью к Stackoverflow - надеясь, что кто-то знает способ обойти защиту от соскоба. .
Я пытался использовать Beautifulsoup 4 и Selenium. Ниже приведены несколько простых примеров.
Общий импорт, используемый в моей основной программе:
import requests
import csv
import io
import os
import re
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from datetime import datetime
from bs4 import BeautifulSoup
код Beautifulsoup 4:
data2 = requests.get("https://www.finishline.com/store/product/mens-nike-air-max-95-se-casual-shoes/prod2783292?styleId=AJ2018&colorId=004")
soup2 = BeautifulSoup(data2.text, 'html.parser')
x = soup2.find('h1', attrs={'id': 'title'}).text.strip()
print(x)
Селен код:
options = Options()
options.headless = True
options.add_argument('log-level=3')
driver = webdriver.Chrome(options=options)
driver.get("https://www.finishline.com/store/product/mens-nike-air-max-95-se-casual-shoes/prod2783292?styleId=AJ2018&colorId=004")
x = driver.find_element_by_xpath("//h1[1]")
print(x)
driver.close()
Оба эти фрагмента являются попытками получить название продукта со страницы продукта.
Фрагмент Beautifulsoup 4 иногда просто застревает и ничего не делает, а иногда возвращается
requests.exceptions.ConnectionError: ('Connection aborted.', OSError("(10060, 'WSAETIMEDOUT')"))
Возвращает фрагмент Selenium
<selenium.webdriver.remote.webelement.WebElement (session="b3707fb7d7b201e2fa30dabbedec32c5", element="0.10646785765405364-1")>
, что означает, что он нашел элемент, но когда я пытаюсь преобразовать его в текст, изменив
x = driver.find_element_by_xpath("//h1[1]")
до
x = driver.find_element_by_xpath("//h1[1]").text
возвращает Access Denied
, что также иногда возвращает сам сайт в браузере. Это можно обойти, очистив куки.
Кто-нибудь знает способ очистки данных с этого сайта? Заранее спасибо.