2016-12-01 65 views
0

我們正在嘗試從Urban Outfitters刮取產品,並且使用BeautifulSoup查找方法發現了一些奇怪的問題。我們在產品url上調用soup.find('span',{「class」:「mainPrice ng-scope ng-binding」})來獲取價格。在我們瀏覽產品網址時(通過網絡爬行),soup.find調用在隨機時間內不會返回任何內容。BeautifulSoup發現隨機返回無

例如,在程序的一次運行中,它在第二個鏈接上不返回任何值。當在沒有改變任何東西的情況下立即運行程序時,它通過了第二個鏈接並在第8個鏈接上失敗。 Here is a link to our output

下面是我們的代碼:

def findPrice(soup): 
     price = soup.find('span', {"class" : "mainPrice ng-scope ng-binding"}) 
     print price 
     if price is not None: 
     return price.text.strip() 

    def postProduct(url): 
     driver.get(url) 
     html = driver.page_source 
     soup = BeautifulSoup(html, "html.parser") 
     product = {'brand': findBrand(soup), 'name': findProductName(soup), 'price': findPrice(soup), 'image': findImageLink(soup), 'description': findDescription(soup), 'url': url} 
     # products.insert(product) 

需要注意的是無關緊要的功能已被排除在外。下面是我們稱之爲postProduct功能循環:

Link to the loop containing postProduct function

可以提供這個問題,將不勝感激任何幫助。

回答

0

當您在抓取網頁內容時,即使您未對程序進行任何更改,也可以從一次抓取網頁抓取工具獲得不同的結果,最可能的解釋是檢索到的網頁內容爲從一次跑到下一次跑。

嘗試捕獲findPrice失敗,並在下次發生時轉儲頁面源,並查看爲什麼您的soup.find調用找不到要查找的內容。