使用BeautifulSoup检索电话号码的Google顶部反馈结果

时间:2019-03-14 06:17:15

标签: python google-maps beautifulsoup scrape

我是python的初学者。我试图运行一个脚本,允许一个人输入大学名称来找回电话号码。 Google的反馈意见就是我所需要的。例如搜索"university of alabama",然后单词"phone"

但是运行代码的结果 带给我结果"None"

我需要帮助,使用漂亮的汤来弄清我的电话簿中的电话号码。

有什么建议吗?

enter image description here

enter image description here ng

2 个答案:

答案 0 :(得分:0)

您使用的find方法错误。您需要提供标签的名称,然后提供可用于唯一标识特定标签的任何属性。您可以使用检查工具找到电话号码所在的标签。

enter image description here

此外,您可能需要找到您的user-agent并将其作为标头传递,以请求从Google获得完全相同的响应。只需在Google中搜索“我的用户代理是什么” 即可找到您的用户代理。

from bs4 import BeautifulSoup
import requests
headers={
'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
}
r=requests.get('https://www.google.com/search?q=university+of+alabama+phone',headers=headers)
soup=BeautifulSoup(r.text,'html.parser')
ph_no=soup.find('div',class_='Z0LcW').text
print(ph_no)

输出

+1 205-348-6010

文档

find() method - BeautifulSoup

答案 1 :(得分:0)

不能保证这适用于所有对象,但您可以使用CSS类选择器以select_one检索第一个结果,并包装在try中,

import requests
from bs4 import BeautifulSoup

query = input("What would you like to search: ")
query = query.replace(" ","+")
query = "https://www.google.com/search?q=" + query + "phone"

r = requests.get(query)
html_doc = r.text
soup = BeautifulSoup(html_doc, 'lxml')
try:
    s = soup.select_one(".mrH1y").text
except:
    s = "not found"
print(s)