获取第一个匹配的网址[webscraping python]

时间:2019-03-15 14:15:10

标签: python url web-scraping

我有一堆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。

3 个答案:

答案 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限制结果。使用类和类型选择器比使用属性更快,这就是为什么我使用ra的原因。

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'])