【发布时间】:2018-05-17 00:56:40
【问题描述】:
所以基本上我的意思是,当我搜索 https://www.google.com/search?q=turtles 时,第一个结果的 href attribute 是 google.com/url 重定向。现在,如果我只是用浏览器浏览互联网,我不会介意这一点,但我正在尝试在 python 中获取搜索结果。所以对于这段代码:
import requests
from bs4 import BeautifulSoup
def get_web_search(query):
query = query.replace(' ', '+') # Replace with %20 also works
response = requests.get('https://www.google.com/search', params={"q":
query})
r_data = response.content
soup = BeautifulSoup(r_data, 'html.parser')
result_raw = []
results = []
for result in soup.find_all('h3', class_='r', limit=1):
result_raw.append(result)
for result in result_raw:
results.append({
'url' : result.find('a').get('href'),
'text' : result.find('a').get_text()
})
print(results)
get_web_search("turtles")
我希望
[{ 网址:“https://en.wikipedia.org/wiki/Turtle”, 文本:“乌龟 - 维基百科” }]
但我得到的是
[{'url': '/url?q=https://en.wikipedia.org/wiki/Turtle&sa=U&ved=0ahUKEwja-oaO7u3XAhVMqo8KHYWWCp4QFggVMAA&usg=AOvVaw31hklS09NmMyvgktL1lrTN', 'text': '乌龟-维基百科'}
我在这里缺少什么吗?我是否需要提供不同的标头或其他请求参数?任何帮助表示赞赏。谢谢。
注意:我看过其他关于此的帖子,但我是初学者,所以我无法理解那些,因为它们不在 python 中
【问题讨论】:
-
你可以删除
/url?q=部分 -
实际上在重定向 url 中还有其他内容。像
sa=部分和一堆其他东西。它似乎因请求而异。所以这不会总是工作
标签: python web-scraping beautifulsoup google-search