爬虫baidu_tieba_spider “gbk“疑问?

在使用Python爬虫baidu_tieba_spider时遇到了UnicodeEncodeError,具体错误为'gbk' codec无法编码位置5273处的'xa9'字符,原因是非法的多字节序列。现在需要找到正确的方法来修改代码,以处理非GBK编码的特殊字符。
摘要由CSDN通过智能技术生成
# 爬虫常用模块
from urllib import parse
import time
import requests

class BaiduTiebaSpider:
    def __init__(self):
        '''定义一些不变的量,如 url 格式等'''
    #     定义 url 格式
        self.url_fmt = "https://tieba.baidu.com/f?kw={}&ie=utf-8&pn={}"
    # 定义一个固定的请求
        self.headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
                      "Chrome/99.0.4844.74 Safari/537.36",
    }

    def get_html(self,url):
        '''根据给定的 url ,获取响应的内容,并返回html'''
        resp = requests.get(url, headers=self.headers)
        html = resp.content.decode()
        return html

    def parse_htm(self,html):
        '''使用正则表达式或 xpath 表达式,来解析页面,提取内容(数据)'''
    def save_data(self,item):
        '''将 item 绑定的数据保存到csv文件或数据库中'''
    def run(self):
        '''主函数,用来控制整体的整形流程'''
        # 1. 获取用户输入的数据
        name = input('请输入贴吧名: ')
        start = int(input('请输入起始页: '))
        end = int(input('请输入终止页: '))
        # 1.1 将name 转为 URL 转义字符
        url_name = parse.quote(name,encoding='utf-8')


        # 2.循环生成指定的 URL  链接地址
        for page in range(start,end+1):   # page = 1,2,3,4.........
            pn = (page-1) * 50
            url = self.url_fmt.format(url_name,pn)   # 生成 url
            print('usl:',url)

            # 3.爬取 URL 对应的页面
            html = self.get_html(url)

            # 4.保存页面到文件
            filename = '{}_第{}页.html'.format(name, page)  
            with open(filename, 'w') as fw:
                fw.write(html)

            time.sleep(2)  # 延时2秒 模仿人的操作


if __name__ == '__main__':
    spider = BaiduTiebaSpider()
    spider.run()

疑问:UnicodeEncodeError: 'gbk' codec can't encode character '\xa9' in position 5273: illegal multibyte sequence

应该如何修改代码~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值