Всем здравствуйте,
Пробую собрать некоторые данный с сайта OLX
Для того чтобы получить некоторую информацию, нужно сделать запрос, но по какой то причине у меня это не получается. Насколько я понимаю, то ошибка в request_header
Исходный код:
import requests
import re
from bs4 import BeautifulSoup
headers = {'user-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 \
(KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"}
session = requests.Session()
def get_html(url):
r = session.get(url, headers=headers)
return r.text
def get_request_parameters(content):
soup = BeautifulSoup(content, "html.parser")
scripts = soup.find_all("script")
phone_token = str(re.findall("var phoneToken = \'(.*)\'", str(scripts))[0])
referer = soup.find('link', {'rel': "canonical"}).get("href")
id = re.findall("-ID(.*).html", referer)[0]
request_url = 'https://www.olx.ua/ajax/misc/contact/phone/' + id + '/?pt=' + phone_token
print(request_url)
print(id)
print(referer)
print(phone_token)
request_header = {'user-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 \
(KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36",
'authority': 'www.olx.ua',
'method': 'GET',
'path': '/ajax/misc/contact/phone/' + id + '/?pt=' + phone_token,
'scheme': 'https',
'accept': '* / *',
'accept-encoding': 'gzip, deflate, br',
'accept - language': 'ru - RU, ru;q = 0.9, en - US;q = 0.8, en;q = 0.7',
'referer': referer,
'sec-fetch - dest': 'empty',
'sec-fetch - mode': 'cors',
'sec-fetch - site': 'same - origin',
'x-requested - with': 'XMLHttpRequest'
}
query_string_parameters = {'pt': phone_token}
response = session.get(request_url, params=query_string_parameters, headers=request_header)
print(response.status_code)
get_request_parameters(get_html('https://www.olx.ua/obyavlenie/prodam-videokartu-radeon-hd-5450-IDGBIF3.html#f9f01ff837'))
Вкладка XHR: