python 去表格空行_【Python记 #4】第一只爬虫

abbdf7aae06347851556693eb1d2c231.png

一、写在前面

趁着期末周中间六天小长假(x)敲点代码。

每次体验Python便利的时候都会想到这个问题:

为什么我感觉学 Python,学到后面完全是在学别人封装好的模块?​www.zhihu.com

别人造好的轮子确实好用,但真学CS还是得造轮子。再联想到SICP的老师和助教们的教导,深深感受到什么叫做“学编程和学编程语言是两回事”。SICP真乃神课,借助语言带我们理解、入门这个学科,最后的那段“知难而进,贵在坚持;省察体悟,贵于改进”给我带来了极大的触动。

水平不足,暂时造不了轮子,今天来用轮子。

二、遇到的问题

Python编写爬虫的教程网上实在太多,这里就不多提了,贴上我的代码:

https://github.com/WLLEGit/Scraper_for_DouBan_Top250​github.com

简单的描述一下这段代码实现了什么:爬取豆瓣TOP250(仿佛所有新手爬虫都喜欢找豆瓣下手),然后保存成csv文件,期间涉及到requests库,BeautifulSoup4库和csv库的使用。

da0a6ee1baa3ae3395249dc1b722b7cb.png
成果

由于是分开学习然后自行编写组合的,出现了很多意料之外的问题,可能是版本或者设置差异导致的吧。

  1. 418响应头(418 I'm a teapot)

触发了反爬虫,需要加上一些Headers来伪装正常的浏览器,我随便用burp抓了一个:

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0"}

418错误码起源还挺有趣的:

Http错误代码418有什么典故?

2. 除了英文均为乱码

经典编码错误,但挺难找到原因的。用notepad++查看的时候改下编码就正常了,说明还是最后写入的时候编码写错了。尝试了别人的几种方法,只有把写文件的编码方式改为utf-8-sig(带签名的utf)成功了。

open("Top250.csv", "w", encoding="utf-8-sig", newline="")

3. 每两条记录间有多余空行

添加newline=""参数解决问题,原因是“在windows这种使用rn的系统里,不用newline=‘’的话,会自动在行尾多添加个r,导致多出一个空行,即行尾为rrn”

详见:https://blog.csdn.net/pfm685757/article/details/47806469

4. 制作出的表格列不是想要的顺序

采用字典方式写入csv时候遇到的问题,字典存储时是无序的,起初手册看错了没注意到DictWriter()是可以接收list作为列名的,改为有序的list作参数就可了。

三、写在后面

SICP还没考,希望人没事(x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值