爬虫感触

本文作者分享了自己从零开始学习爬虫的心路历程,从copy代码开始,逐步理解requests和BeautifulSoup库,遇到雪球网反爬机制后学会解析JSON,再到东方财富股吧的分布式爬虫,学习使用Spark处理数据。尽管感到爬虫的不通用性和挑战,但也收获了数据处理和存储的经验,对未来的工作有了新的期待。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此文是作者记录这段时间以来,写爬虫代码的经历和感触,类似日记的玩意儿,具体技术有指明一些方向,看客随意。

最开始的时候,我是学着一篇贴吧的爬虫写的,其实都不算是写,应该是copy。

这份启蒙代码我是放在jupyter上的,算上注释,一百行出头。用的是requestsBeautifulSoup这两个库。

copy完了后我非常仔细地观察了每行代码,结合着爬取的结果,再结合着观察网页,看懂了每一行代码什么意思

然后先改了URL爬了其他贴吧,然后改了对象爬了同一个贴吧的不同内容,然后改了结构爬了不同的网页。

感觉好像就这些内容,获取html,查找标签,存储。我好像已经会了。

你知道我要说“然而”吧?对,然而,在正式接到爬虫任务的时候,出现了一些比较奇特,或者是复杂的需求。

当时是雪球网的股票评论信息和用户信息(公开的),我是想,这不和贴吧一样吗?照猫画虎写就一份代码。代码逻辑肯定没问题了,可我一试,解析出来的却是空,我让他打印整个html,发现根本就没有我要的内容,我这个一脸萌比。经历很久的探索,我用inspection发现,network中会传输很多文件,真正的评论数据来源其实在那当中的一个json当中。于是json库进入了我的视线(过程当中也是经历了一些困难的),然后我学会了直接请求并解析json文件传递的数据。

雪球有反爬处理,后来只能取某支股票的前两页评论内容。于是我降低了爬取频率,也用IP代理,不过我觉得降低频率比较温柔,所以没怎么用代理,速度也够。

解决了禁止访问的问题,我又不知道存成什么格式的,最开始没和别人商量好,写了好几份,存成JSON,txt,PSQL都有,最后敲定是存在PSQL中,我才踏实下来。在此过程中,我为了把文件存成各种格式,又学会了用python远程操作另一台机器的shell(paramiko),会了用python连接远程数据库PSQL(psycopg2或者JDBC),可以说是python脑残粉了。后来有需求要我每天收集数据,我就去学了crontab,现在看着数据库里近千万条记录和每天自动增多的新内容,我很有成就感。中间还学了很多莫名其妙的东西,什么图片转变成字符画呀,额,都是无聊的时候copy的。

后来是东方财富的股吧评论数据,这时候我已经有了点爬虫底子了,第一感觉就是这个网站的标签很多很乱,而且数据量很庞大。第二感觉就是爬虫这个东西太不general了,不同的网站要设计不同的代码,取不同的标签,一点都不方便。

这回要求我用集群跑分布式的爬虫,说是要快一点,并将内容以parquet格式存到hadoop上面,听着都懵了,这不头大?后来还是被我解决了。学会用spark-submit提交任务,用spark虚表的write模块写成parquet格式,当然也可以用spark的sql来执行,直接存入hive当中。这里新学的内容其实挺少的,不过是熟悉了一点spark的皮毛,我觉得要真正理解它并发挥其威力,必要从其源码动手,光靠使用的话,可能不太有效。

另外,本来想学一学scrapy这个框架,但是他的流程看着挺麻烦的,我就懒得弄了,反正现在也能跑不是?大家别学我,技多不压身才是对的,推荐你萌去学。

最后,我想说爬虫的水绝对很深,刚入门的我还有很多没接触到,像PIL+pybrain或者tensorflow还是什么其他的处理验证码就没接触到,还算运气好吧。爬虫只是我们收集数据的手段,重要的是收集到数据拿来干什么。它给我的感触就是很难通用,针对一个网站的爬虫不能用到另一个网站上,另外太多时间花费在查找真正的数据来源(比如前面的json),感觉有点不值得。

事情做的不多也不够好,但我确是尽力了,也花费了不少时间,中间各种磕磕撞撞,理解不能,兼容不能,但至少还是有收获的,毕竟数据整齐又漂亮,我个人对代码的感觉也不太一样了。我不希望我接下来还要继续写爬虫,我想干点其他的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值