今天用ChatGPT写了一段代码,爬取中文网站数据,提示词如下:
写一段Python程序,爬取网页数据并保存到excel表格。
具体步骤:
打开网站https://www.zhenfund.com/Case/?id=3,解析源代码;
定位 id="ma_3" 的div元素;
定位其中所有的li元素;
定位li元素中的img 元素,提取alt值作为excel表格第1列;
定位li元素中的a元素,提取href值作为excel表格第2列;
保存excel表格到电脑d盘
注意:alt值里面有些是中文字符,可能在保存到excel表格时出现乱码问题。
程序运行很成功,但是结果里面有很多乱码,这些乱码在源代码都是中文。
把这个问题向ChatGPT反馈,尝试了几种方式来修改,都没有作用。
爬取出来的excel文件,用各种编码都无法正常显示。
那么,应该是源文件的问题了。
看来ChatGPT 不太懂这个问题,于是转而用搜索引擎搜索这个问题,最后找到一个靠谱答案:一般的网站的编码格式都是 UTF-8,所以当你系统的默认编码也是 UTF-8 时,也就是说,你的默认编码方式和目标网站的编码方式一致时,即使不明确设置编码方式,也不会出问题。但是爬取过程中没问题,但是用打开保存好的 csv 文件时出现乱码,这个其实就是源文件的编码方式和 Excel 的解码方式不一致导致的。这种问题解决也很简单,只要在代码中设置一下 encoding 即可。 这里建议一种方法,r.encoding = r.apparent_encoding ,这个可以自动推测目标网站的编码格式,省的你自己去一个个设置。
于是,根据这个情况让ChatGPT进行修改:
随后运行成功,不再有任何乱码出现了: