find_all()返回None

时间:2015-07-10 21:17:42

标签: python-3.x web-scraping beautifulsoup

我正在尝试使用漂亮的汤在谷歌网页上获取美元的价值。但是,每次调用find_all()函数都会返回None。我不知道自己要做什么。请帮帮我!

代码:

#Get dollar value   
from requests import *    
from bs4 import *    
r = get("https://www.google.com.br/#q=dolar")

if (r.status_code != 200):
  print ("conexão inválida")
else:
  print("Prosseguindo...")

  soup = BeautifulSoup(r.content, "html.parser")

  print (soup.find_all("div", attrs = {"class" : "vk_ans vk_bk"}))
  print (soup.find_all("div", class_="vk_ans vk_bk"))
  print (soup.find_all(string="reais"))
  print (soup.find_all(class_="vk_ans"))
  print (soup.select("div.vk_ans.vk_bk"))
  print (soup.html.find_all("div", class_="vk_ans"))
  print (soup.select(".vk_ans vk_bk"))

我正在使用python 3.4和bs4.4.0 Windows 8.1

1 个答案:

答案 0 :(得分:0)

find_all正在返回None,因为它找不到您要求的元素。请注意,您在浏览器中https://www.google.com.br/#q=dolar看到的HTML代码可能与requests.get提取的代码不同。

您可以通过在响应字符串中搜索类名来轻松检查:

In [13]: "vk_ans" in r.content
Out[13]: False

代码中没有字符串vk_ans的痕迹。

另外,有两个注释:

  • 使用Google获取美元的当前价值不是一个好主意。尝试使用其他一些不会像谷歌主页那样频繁更改的网站。
  • 请勿使用from X import *。您正在规划脚本的全局命名空间。