помогите c парсером на python
На сайте http://burlang.ru/ нужно вставить в поле ввода слово на русском, и сохранить полученный перевод.
Вот как я это делаю:
import requests
from bs4 import BeautifulSoup
user_agent = ""
word = input()
URL = 'http://burlang.ru/'
HEADERS = {'user-agent': user_agent, 'accept': '*/*' }
data = {
"russian_word": word
}
def get_html(url):
r = requests.get(url, data= data, headers = HEADERS)
return r
def get_content(html):
soup = BeautifulSoup(html, 'html.parser')
items = soup.find_all('ul', class_='translate-list')
print(items)
def parse():
html = get_html(URL)
get_content(html.text)
parse()
Ответы (1 шт):
Автор решения: Стас
→ Ссылка
Если посмотреть ответ вашего запроса, то мы получаем главную страницу сайта! Чтобы отправлять запрос именно на перевод - нужно заменить ссылку на http://burlang.ru/site/russian-translate
Теперь отправляем на нее запрос и видим:
Request must be XMLHttpRequest.
Сравниваем с тем, что отправляет на сайт браузер:
X-Requested-With: XMLHttpRequest
Просто нужно докинуть это в headers. Также замените data на params
Вот пример, с парсингом разберетесь сами:
import requests
url = "http://burlang.ru/site/russian-translate"
userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36"
word = "Привет"
headers = {
"user-agent": userAgent,
"accept": "*/*",
"x-requested-with": "XMLHttpRequest"
}
parameters = {
"russian_word": word
}
print(requests.get(url, headers=headers, params=parameters).text)
OUT:
<div class="alert alert-success">
<ul class="translate-list">
<li>(амар) мэндэ</li>
</ul>
</div>