使用漂亮的汤刮网

时间:2020-04-06 10:51:08

标签: python beautifulsoup

我正在用漂亮的汤刮碎一个地方。

代码:

    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

1 个答案:

答案 0 :(得分:0)

当我尝试运行部分代码时,我发现了一个错误:

enter image description here

之后,我尝试使用请求:

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

您已经获得了代码403-这意味着服务器可以理解该请求,但拒绝对其进行授权。您可以获取有关here

的更多信息

通常,此错误与解析器的原始保护相关。若要解决此问题,请使用以下方法:您必须使用标头将deceive用作浏览器的网站 为此下载requests lib 然后创建一个字典

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"}

除了这些值之外,您还可以替代自己的值。最简单的方法是在浏览器中使用Network Analiser(在Chrome中按F12键) enter image description here

然后

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)

但是在这种情况下,问题就不同了。您尝试访问的站点根本无法正常工作: enter image description here