2016-07-01 3 views
0

Я немного смущен о том, как это сделать. Я не уверен, что это правильно, но я пытаюсь запросить поиск по URL-адресу. Я пробовал сделать это:Python BeautifulSoup && Запрос на очистку поисковых систем

url = 'https://duckduckgo.com/dogs?ia=meanings' 
session = requests.session() 
r = session.get(url) 
soup = bs(r.content, 'html.parser') 

Я получаю некоторый html обратно от ответа; однако, когда я ищу все ссылки, они не имеют ничего общего с исходным поисковым URL.

links = soup.find_all('a') 
for link in links: 
    print(link) 

<a href="https://duckduckgo.com/html/?q=dogs">here</a> 

Когда я делаю поиск в браузере и проверить HTML-код, все ссылки существуют, но по какой-то причине не возвращаются ко мне по моей просьбе.

У кого-нибудь есть идеи, я пытаюсь создать приложение для очистки веб-страниц, и я думал, что это будет что-то очень простое, что я мог бы включить в мой терминал.

ответ

2

Проблема заключается в том, что результаты поиска и большая часть страницы динамически загружается с помощью кода JavaScript, выполняемого браузером. requests будет загружать только исходную статическую HTML-страницу, у нее нет JS-движка, так как это не браузер.

Вы есть в основном 3 основных варианта:

  • использование DuckDuckGo API (Python wrapper, может быть есть лучше один - пожалуйста перепроверить) - этот вариант является предпочтительным
  • загрузить страницу в реальном браузере посредством selenium, а затем проанализируйте HTML, который теперь является тем же самым полным HTML, который вы видите в своем браузере.
  • попытайтесь выяснить, какие запросы сделаны для загрузки страницы и имитируют их в вашем коде . Это самый сложный и самый хрупкий подход, который может включать в себя сложную логику и разбор кода JavaScript.
Смежные вопросы