2015-12-16 46 views
1

美好的一天! 我目前正在爲阿里巴巴網站製作一個網頁抓取工具。 我的問題是返回的源代碼沒有顯示我感興趣的某些部分。當我使用瀏覽器檢查源代碼時,數據在那裏,但使用BeautifulSoup時無法檢索。 任何提示?使用BeautifulSoup進行網頁掃描:檢索網站的源代碼

從BS4進口BeautifulSoup

def make_soup(url): 
    try: 
     html = urlopen(url).read() 
    except: 
     return None 
    return BeautifulSoup(html, "lxml") 

URL = 「http://www.alibaba.com/Agricultural-Growing-Media_pid144」 soup2 = make_soup(URL)

我感興趣的高亮部分爲使用Chrome的開發者工具顯示在圖像中。但是當我嘗試在文本文件中寫入時,某些部分(包括突出顯示的部分)無處可查。有小費嗎? TIA!

enter image description here

+2

他們可能會在js客戶端做一些動態的文檔寫作,也許是爲了迴應您尚未做出的AJAX請求。 – polhemic

+0

在代碼塊的代碼塊部分之下是兩個分配嗎? – Lori

回答

0

您需要至少提供User-Agent頭。

實施例使用requests package代替urllib2

import requests 
from bs4 import BeautifulSoup 

def make_soup(url): 
    try: 
     html = requests.get(url, headers={"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36"}).content 
    except: 
     return None 
    return BeautifulSoup(html, "lxml") 

url = "http://www.alibaba.com/Agricultural-Growing-Media_pid144" 
soup = make_soup(url) 

print(soup.select_one("a.next").get('href')) 

打印http://www.alibaba.com/catalogs/products/CID144/2

+1

嗨!我在運行程序時遇到此錯誤。 AttributeError:'NoneType'對象沒有屬性'get' – ryangph