# 爬虫常用模块 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
应该如何修改代码~