Как разобрать конкретные ссылки из поиска Google - PullRequest
0 голосов
/ 10 июля 2019

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

Я использовал инструмент разработчика, чтобы проверить эти ссылки, и все они кажутся частью элемента внутри элемента.Я пытался получить эти элементы с помощью метода select () с помощью селекторов CSS, но я не могу получить эти конкретные классы.
Я уже пробовал решения в других ответах на подобные вопросы здесь, но безуспешно.Затем я попытался с помощью регулярных выражений отфильтровать все ссылки, получая только ссылки, начинающиеся с "http://", как показано ниже:

import requests
import bs4
import re

# I'm using the word 'skateboard' to test

res = requests.get('http://google.com/search?q=skateboard')
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, features='html.parser')
for links in soup.find_all('a', attrs={'href': re.compile("http://")}):
    print(links.get('href'))

, но это возвращает только ссылки, связанные с картами Google. Было бы очень полезно, если выребята, есть идеи, как получить только те конкретные элементы, упомянутые ранее. Большое спасибо !!!

1 Ответ

0 голосов
/ 20 июля 2019

проблема решена с помощью soup.find_all ("tagName", class _ = "className")

...