簡體   English   中英

web 刮用美湯

[英]web scraping using beautiful soup

我正在用漂亮的湯來一個網站。

代碼:

    from bs4 import BeautifulSoup as soup
    
    from urllib.request import urlopen as uReq
    my_url = 'https://www.bewakoof.com/biker-t-shirts'
    uClient = uReq(my_url)
    
    
    page_html = uClient.read()
    uClient.close()
    page_soup = soup(page_html, "html.parser")
    
    containers = page_soup.findAll("div", {"class": "productGrid"})
    
    print(len(containers))

我收到下面提到的錯誤。

錯誤

o = containerClass(current_data)
TypeError: __init__() takes 1 positional argument but 2 were given

當我嘗試運行您的部分代碼時,我發現了一個錯誤:

在此處輸入圖像描述

之后我嘗試使用請求:

>>> my_url = 'https://www.bewakoof.com/biker-t-shirts'
>>> import requests as re
>>> r = re.get(my_url)
>>> r
<Response [403]>

你有代碼 403 - 這意味着服務器理解請求但拒絕授權它。 你可以在這里獲得更多信息

大多數情況下,此錯誤與解析器的原始保護有關。 要解決這個問題,請使用以下方法:您必須使用標deceive您是瀏覽器的站點為此下載請求庫然后創建一個字典

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"}

您可以用自己的值代替這些值。 最簡單的方法是在瀏覽器中使用網絡分析器(在 Chrome 中按 F12) 在此處輸入圖像描述

然后

import requests as req
url = "url"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"}
r = req.get(url, headers)

但在這種情況下,問題就不同了。 您嘗試訪問的網站根本不起作用: 在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM