我正在尝试通过python随机探索Webscrapping。我有Google搜索结果页面的链接。我使用url lib提取了GOOGLE SEARCH RESULT PAGE中存在的所有链接。从谷歌的解析页面,我正在美丽的汤图书馆的帮助下提取所有可能的锚标签。所以现在我有很多链接。我要选择与我的所需模式匹配的所选链接。 示例我想选择所有这样的行: 这是已解析的许多链接之一。但是我想缩小像这样的链接的结果
/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))
我想使用正则表达式提取所需的文本部分。我正在使用Beautiful汤模块提取HTML数据。简而言之,这是一个很大的表达问题。
答案 0 :(得分:2)
它不是正则表达式,但我会使用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])
答案 1 :(得分:0)
如果您确实需要正则表达式,请使用q=(.*/)&
,否则请使用Ry-'s answer,即:
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/