2015-07-10 131 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代碼,因爲這個請求方法不會讀取頁面源代碼。 我使用硒來解決這個問題,但是它打開了一個網頁瀏覽器,它並不酷。 –