pyCurl和BytesIO用于抓取网站



我需要刮擦。具体来说,我使用Pycurl和BytesIO。

以下代码:

c = pycurl.Curl()
page = BytesIO()
c.setopt(c.INTERFACE, "tun0")
c.setopt(c.USERAGENT, userAgent)
c.setopt(pycurl.CAINFO, certifi.where())
c.setopt(c.URL, URL)
c.setopt(c.WRITEDATA, page)
c.perform()

直到昨天,page.getvalue()会返回页面的html,然后我会将其传递给bs4。然而,今天我注意到它返回了一个以字节为单位的字符串,我甚至无法将其解码为utf-8,因为它返回了错误:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte

我如何在字符串中键入url的内容,以便将其传递给bs4并抓取?

检索到的数据不是有效的UTF-8,因此无法自动解码。

  • 使用响应返回的标头来确定正文应该使用的编码。如果编码不是UTF-8,请使用正确的解码进行解码
  • 如果声明正文为UTF-8,但包含无效数据,请使用bytes.decode的第二个参数来指定如何处理无效数据

相关内容

  • 没有找到相关文章

最新更新