如何使用Beautifulsoup访问排名前五的谷歌搜索结果链接
问题描述:
我想访问谷歌搜索结果的前五位(或任何指定数量)的链接。通过研究,我发现并修改了以下代码。如何使用Beautifulsoup访问排名前五的谷歌搜索结果链接
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来做到这一点?
提前致谢!
答
对你更具体的选择。请注意,结果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]
答
我想你可以使用:
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]
答
一个老问题,但它可以帮助别人以后......你可以用“开始”的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)