我有一堆Google查询,我想获取它们的第一个匹配网址。
我的一段代码:
import requests
query = 'hello world'
url = 'http://google.com/search?q=' + query
page= requests.get(url)
print(url)
然后,我想检索的是第一个Google命中的网站,在本例中为Wikipedia页面:https://en.wikipedia.org/wiki/%22Hello,_World!%22_program
我有其余的代码,但是我不知道如何获取URL。
答案 0 :(得分:0)
我建议使用“美丽汤”之类的东西来定位包含结果URL的HTML元素。然后,您可以存储URL并根据需要进行操作。
import requests
from bs4 import BeautifulSoup
query = 'hello world'
url = 'http://google.com/search?q=' + query
page = requests.get(url)
soup = BeautifulSoup(page.text, 'html.parser')
for link in soup.find_all('a'):
print(link.get('href'))
答案 1 :(得分:0)
您可以使用BeautifulSoup查找网络结果,然后找到第一个返回href的元素:
import requests
import bs4
query = 'hello world'
url = 'http://google.com/search?q=' + query
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'}
page= requests.get(url, headers=headers)
soup = bs4.BeautifulSoup(page.text, 'html.parser')
for elem in soup(text='Web results'):
print (elem.find_next('a')['href'])
输出:
print (elem.find_next('a')['href'])
https://en.wikipedia.org/wiki/%22Hello,_World!%22_program
答案 2 :(得分:0)
您可以使用select_one限制首次匹配。使用类r限制结果。使用类和类型选择器比使用属性更快,这就是为什么我使用r
和a
的原因。
import requests
from bs4 import BeautifulSoup as bs
query = 'hello world'
url = 'http://google.com/search?q=' + query
page= requests.get(url)
soup = bs(page.content, 'lxml')
print(soup.select_one('.r a')['href'])