pyCurl和BytesIO用于抓取网站

2024-05-15 17:59:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要刮擦。具体来说,我使用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和scrape


Tags: 字符串代码urlpagebytecurlinterfaceutf
1条回答
网友
1楼 · 发布于 2024-05-15 17:59:57

您检索到的数据无效UTF-8,因此无法自动解码

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

相关问题 更多 >