我是python的初学者。我试图运行一个脚本,允许一个人输入大学名称来找回电话号码。 Google的反馈意见就是我所需要的。例如搜索"university of alabama"
,然后单词"phone"
但是运行代码的结果
带给我结果"None"
我需要帮助,使用漂亮的汤来弄清我的电话簿中的电话号码。
有什么建议吗?
答案 0 :(得分:0)
您使用的find
方法错误。您需要提供标签的名称,然后提供可用于唯一标识特定标签的任何属性。您可以使用检查工具找到电话号码所在的标签。
此外,您可能需要找到您的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
文档
答案 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)