Как парсить авито на python?
Пробовал два метода
1)
import requests
from fake_useragent import UserAgent
userAgent = UserAgent().random
print(userAgent)
url = "https://www.avito.ru/"
response = requests.get(url,"user-agent:"+ userAgent);
print(response.text)
В этом случае выводится ошибка 403 или как говорит авито "Доступ ограничен: проблема с IP".
Пробовал добавить в заголовки
accept:
accept-encoding:
accept-language:
content-type:
cookie:
но это не дало результата.
2)
from selenium import webdriver
import time
driver = webdriver.Chrome(executable_path = "G:\\pythonProject\chromeDriver\chromedriver.exe")
url = "https://www.avito.ru/"
try:
driver.get(url=url)
time.sleep(5)
except Exception as ex:
print(ex)
finally:
driver.close()
driver.quit()
Второй метод заключался в использовании модуля selenium, но тут я не нашёл решение следующей проблемы
G:\pythonProject\main.py:4: DeprecationWarning: executable_path has been deprecated, please pass in a Service object
driver = webdriver.Chrome(executable_path = "G:\\pythonProject\chromeDriver\chromedriver.exe")
Traceback (most recent call last):
File "G:\pythonProject\main.py", line 4, in
driver = webdriver.Chrome(executable_path = "G:\\pythonProject\chromeDriver\chromedriver.exe")
File "G:\AvitoPythonParsing\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 69, in __init__
super().__init__(DesiredCapabilities.CHROME['browserName'], "goog",
File "G:\AvitoPythonParsing\lib\site-packages\selenium\webdriver\chromium\webdriver.py", line 92, in __init__
super().__init__(
File "G:\AvitoPythonParsing\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 277, in __init__
self.start_session(capabilities, browser_profile)
File "G:\AvitoPythonParsing\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 370, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "G:\AvitoPythonParsing\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 435, in execute
self.error_handler.check_response(response)
File "G:\AvitoPythonParsing\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 247, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed.
(unknown error: DevToolsActivePort file doesn't exist)
(The process started from chrome location C:\Users\Пользователь\AppData\Local\Google\Chrome\Application\chrome.exe is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
Stacktrace:
Backtrace:
Ordinal0 [0x00246463+2188387]
Ordinal0 [0x001DE461+1762401]
Ordinal0 [0x000F3D78+802168]
Ordinal0 [0x00111F40+925504]
Ordinal0 [0x0010E331+910129]
Ordinal0 [0x00141430+1119280]
Ordinal0 [0x0014108A+1118346]
Ordinal0 [0x0013C5F6+1099254]
Ordinal0 [0x00116BE0+945120]
Ordinal0 [0x00117AD6+948950]
GetHandleVerifier [0x004E71F2+2712546]
GetHandleVerifier [0x004D886D+2652765]
GetHandleVerifier [0x002D002A+520730]
GetHandleVerifier [0x002CEE06+516086]
Ordinal0 [0x001E468B+1787531]
Ordinal0 [0x001E8E88+1805960]
Ordinal0 [0x001E8F75+1806197]
Ordinal0 [0x001F1DF1+1842673]
BaseThreadInitThunk [0x75CBFA29+25]
RtlGetAppContainerNamedObjectPath [0x77947A9E+286]
RtlGetAppContainerNamedObjectPath [0x77947A6E+238]
(No symbol) [0x00000000]
chromedriver подбирал по версию chrome, сам chromedriver добавил в переменную PATH. Пытался воспользоваться решениями со stackoverflow, но это не дало результата.
Вопрос заключается в следующем, есть ли какие-то другие методы парсинга на python? Или как возможно обойти блокировку avito, или как можно решить проблему с selenium?