2015-07-10 118 views
0

我想在美元的价值在谷歌网页使用美丽的汤。但是,每次调用find_all()函数都会返回None。我不知道我必须做什么。请帮帮我!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 窗口8.1

回答

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 *。您正在污染脚本的全局名称空间。
+0

感谢您的建议! 我发现问题:Google有JavaScript代码,因为这个请求方法不会读取页面源代码。 我使用硒来解决这个问题,但是它打开了一个网页浏览器,它并不酷。 –