Эквивалентное регулярное выражение для извлечения ссылки с использованием Beautiful Soup - PullRequest
1 голос
/ 07 апреля 2019

Я пытаюсь случайно исследовать Webscrapping через python. У меня есть ссылка на страницу результатов поиска Google. Я использовал url lib для извлечения всех ссылок, которые присутствуют на странице результатов поиска Google. С этой проанализированной страницы Google я извлекаю все возможные теги привязки с помощью библиотеки Beautiful Soup. Так что теперь у меня много ссылок. Среди тех, которые я хочу выбрать выбранные ссылки, которые соответствуют моему требуемому шаблону. Пример я хочу выбрать все такие строки: Это одна из многих ссылок, которые были проанализированы. Но я хочу сузить результат ссылок, которые похожи на это

/url?q=http://avadl.uploadt.com/DL4/Film/&sa=U&ved=0ahUKEwiYwOKe1r7hAhWUf30KHcHUBkMQFggUMAA&usg=AOvVaw39cIJ0T8_CAQMY8EkSWZJl

И из таких выборок мне нужно извлечь только эту часть

http://avadl.uploadt.com/DL4/Film/

Я пробовал это и это

possible_websites.append(re.findall('/url?q=(\S+)',links))
possible_websites.append(re.findall('/url?q=(\S+^&)',links))

Вот мой код

soup = BeautifulSoup(webpage, 'html.parser')
tags = soup('a')
possible_websites=[]
for tag in tags:
    links = tag.get('href', None)
    possible_websites.append(re.findall('/url?q=(\S+)',links))

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

Ответы [ 2 ]

2 голосов
/ 07 апреля 2019

Это не регулярное выражение, но я бы использовал urllib :

from urllib.parse import parse_qs, urlparse

url = urlparse('/url?q=http://avadl.uploadt.com/DL4/Film/&sa=U&ved=0ahUKEwiYwOKe1r7hAhWUf30KHcHUBkMQFggUMAA&usg=AOvVaw39cIJ0T8_CAQMY8EkSWZJl')
qs = parse_qs(url.query)

print(qs['q'][0])
0 голосов
/ 07 апреля 2019

Если вам действительно нужно регулярное выражение, используйте q=(.*/)&, в противном случае используйте Ry-ответ , то есть:

import re
u = "/url?q=http://avadl.uploadt.com/DL4/Film/&sa=U&ved=0ahUKEwiYwOKe1r7hAhWUf30KHcHUBkMQFggUMAA&usg=AOvVaw39cIJ0T8_CAQMY8EkSWZJl"
m = re.findall("q=(.*/)&", u)
if m:
    print(m[0])
    # http://avadl.uploadt.com/DL4/Film/

enter image description here

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...