python爬虫学习心得

文章讲述了作者作为爬虫新手的学习经历,强调了GET和POST请求的区别,编码问题在爬虫中的重要性,以及正则表达式和lxml库在信息提取中的应用。Chrome浏览器的开发者工具被推荐为爬虫开发的辅助工具,同时提到了爬虫与机器学习的结合可能性。

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

爬虫新手一枚,因为工作原因需要学习相关的东西。发表下这段时间学习的心得,有说得不对的地方欢迎指指点点。

一.什么是爬虫

在学习爬虫之前只对爬虫有个概念性的认识。通过向服务器发送请求获取服务器传回信息,再根据其提取所需的信息。原理虽然简单,但是涉及的细节非常多,从一个坑爬出来又掉进另一个坑。

二.post和get

post和get是两种向服务器发送请求的方式,有些http基础的同学应该都清楚他们的用处,在写爬虫时,涉及到同服务器交互肯定是离不了这两种方法的。其中get请求用于一系列对服务器数据没有影响的操作,如获取html,检索等,而post一般是用于对服务器数据有影响的功能,如提交表单等。如果只是简单爬取信息,一般用get方法。除此之前,get方法的安全性较Post方式要差些,如果需要提交包含机密信息的话,建议用Post提交方式,但get的执行效率比post方法好。

三.编码方式

这是跌进的第一个坑。源于对一个网页爬取时,不管怎么样都失败,浪费了将近一天时间才发现是编码混乱的原因造成。目前大多数中文网站采用GBK,GB2312,UTF-8这三种编码方式进行编码,详细的编码原理可查阅其他资料。通常在获取一个网页的html代码后都会先根据其编码方式进行转码,下面用python对从path获取的网页根据utf-8的方式进行转码。

html=urllib.request.urlopen(path).read().decode("utf-8")

正常来说,一个网页只会有一种编码方式,通过上述的代码就能完成对其的转码。但是,如果在一个网页里存在两种编码方式的字符会怎么样?对,就是这个原因导致我在这个问题上卡了将近一天。对我这个刚接触爬虫的人,怎么也不会想到一个网页里会存在两种编码方式,所以我无论用哪种方式进行转码都会失败。当找到原因后,使用了lxml库自带的转码方法后可以顺利完成转码。

html=urllib.request.urlopen(path).read()
htmletre = etree.HTML(html)
result = etree.tostring(htmletre, encoding='utf-8', pretty_print=True, method="html")

但是后来发现,这种方法依然有很大的问题。就是如果一个网页包含有两个编码的字符时,如果对其中一种编码方式进行转码,当第一次遇到另一个编码的字符时,转码就会结束,最后导致结果缺失,对于爬取信息来说是不可接受的,特别是当另一个编码的字符出现在前半部分时会导致后半部分信息全部缺失。放弃这种方法后,通过重新分析网页的代码,发现另一种编码方式只会出现在极个别地方,如果放弃这部分编码,只对大部分有效信息进行转码也是可以接受的。查阅相关文档后,利用以下代码就可以实现对大部分编码进行转码。

html=urllib.request.urlopen(path).read().decode('gbk',errors='ignore')

四.正则表达式

在获取html代码后,就可以利用正则表达式进行信息提取了,正则表达式相关的知识也请查阅其他文档。这里想要说一下lxml库的使用,虽然大部分信息都可以通过正则表达式进行提取,但如果需要对代码本身的结构进行提取和分析就需要用到lxml库了。虽然正则表达式也能进行相关的操作,在不知道lxml库之前也利用正则表达式对标签层次关系进行过分析,但还是推荐使用lxml库,这里推荐一个链接。 Python爬虫利器三之Xpath语法与lxml库的用法 | 静觅

五.Chrom浏览器

Chrome浏览器对于写爬虫非常有用,Chrome自带的开发者工具能帮助分析网页的源码、资源和数据包。特别是要写表单提交一类功能时,Chrome自带的抓包功能非常好用,通过分析包结构可以实现各类复杂表单的模拟提交。如果对Chrome开发者工具不熟悉的同学,推荐下面这个链接。Google Chrome 浏览器 开发者工具 使用教程

六.爬虫与机器学习

在学习爬虫前,一直在学习机器学习。通过这段时间对爬虫的学习,我觉得机器学习跟爬虫能够很好的结合起来。一方面对某些模型的训练可以通过爬虫来获取足够多的数据样本,另一方面,因为各种网站的结构有很大的差异,利用机器学习可以对各种结构的网页进行准确分析和信息提取,最终达到相辅相成的目的。

无论是爬虫还是机器学习我都是一个初学者,上述都是这段时间的一个心得和总结,一方面希望对其他初学者有一点帮助,另一方面也希望有任何说错的和还能改进的地方大家能够指出来。

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

二、Python必备开发工具

 三、精品Python学习书籍

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

四、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、Python练习题

检查学习结果。

七、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 最后祝大家天天进步!!

上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值