如何使用Beautifulsoup访问前五个Google结果链接

时间:2017-04-20 22:26:26

标签: python url hyperlink beautifulsoup google-search

我想访问Google的前五个(或任何指定数量)结果链接。通过研究,我发现并修改了以下代码。

import requests
from bs4 import BeautifulSoup
import re    
search = raw_input("Search:")
page = requests.get("https://www.google.com/search?q=" + search)
soup = BeautifulSoup(page.content, "lxml")
links = soup.find("a")
print links.get('href')

这会返回页面上的第一个链接,每次都会显示Google图片标签。

这不完全是我想要的。对于初学者,我不想要任何谷歌网站的链接,只需要结果。此外,我想要前三个或五个或任何指定数量的结果。

如何使用python执行此操作?

提前致谢!

4 个答案:

答案 0 :(得分:0)

更具体的选择器。请注意,结果div具有此类“_NId”。所以选择div中的第一个链接。

result_divs = soup.findAll('div', {'class': '_NId'})[:4]
links = [div.find('a') for div in result_divs]
hrefs = [link.get('href') for link in links]

答案 1 :(得分:0)

我想你可以使用:

import requests
from bs4 import BeautifulSoup
import re
search = raw_input("Search:")
results = 100 # valid options 10, 20, 30, 40, 50, and 100
page = requests.get("https://www.google.com/search?q={}&num={}".format(search, results))
soup = BeautifulSoup(page.content, "html5lib")
links = soup.findAll("a")
for link in links :
    link_href = link.get('href')
    if "url?q=" in link_href and not "webcache" in link_href:
        print link.get('href').split("?q=")[1].split("&sa=U")[0]

答案 2 :(得分:0)

一个老问题,但以后可能会有所帮助......你可以用' start'来指定结果编号。 (结果页面上的10的倍数)并将其插入循环中。下面的示例获得前200个结果。记住字符串转换。

s='AAPL'
for mypage in range(0, 200, 10):
    myurl="http://www.google.com/search?q="+s+"&start="+str(mypage)

奖励:请注意您还可以使用' hl':en(英语),fr(法语)等指定语言

myurl="http://www.google.com/search?hl=fr&q="+s+"&start="+str(mypage)

答案 3 :(得分:0)

您可以尝试以下代码:

dump.pm2

请务必按照建议替换您的User-Agent信息。