pytho多页怎样爬取电影?

  • A+
所属分类:python网络爬虫

电影天堂的结构很简单,拿来做练手项目很容易。实现一个简单的爬虫,前提是要理解http协议,什么是request和response。其次是会用chrome,用chrome的开发者工具,获取request,和response。

再然后,才是Python,Python的requests模块,re模块,以及使用这些模块过程中遇到的中文乱码问题。

pytho多页怎样爬取电影?

1.unicode和bytes

中文乱码的问题,主要是区分Python的默认编码,什么是unicode,以及在cmd,shell,或者是Python命令行中编码解码的情况。

使用chardet工具可以更直观的知道我们的字符串的编码类型。使用下载工具。

通过以上的尝试,可以了解到python2中字符串默认是Bytes类型,也可以指定unicode类型。理解了Bytes,和unicode,才

可以顺利的对字符串进行转换。Bytes类型通过可以解码成unicode,unicode自然也可以通过编码成Bytes。

2.Requests爬取网页

作为中文使用者,在爬取网页的过程中我们经常要与编码解码打交道,这是不可避免的。我爬取的网站是电影天堂,在爬取网页的过程发现了一个费解的事情。

一开始我的思路是根据chardet提供的编码信息,对文本进行解码unicode编码utf-8的操作。对于GB2312的解码编码的结果没有出现问题,但是对于ISO-8859-2的解码编码后,中文依旧是乱码。

对于爬去的网页,如果有特殊字符是会对chardet.detect的结果造成干扰。比较稳妥的方法是,根据网页的提供的信息进行强制解码,即

在google后,我采取了上面的思路,对于爬去的网页进行统一的解码编码,暂时未发现问题。

pytho多页怎样爬取电影?

3.正则表达式

获取到整个网页信息后,通过正则表达式可以精准的获取的想要的数据。正则表达式博大精深,暂时也只学了个皮毛,配合python的re模块,这里我只用到了re.compile以及re.findall两个方法。

compile会得到一个re的对象,通过该对象再进行findall操作会更加的快速。当然也可以直接使用findall方法,要携带多一个参数。

电影天堂的列表采用这种风格的html。

pytho多页怎样爬取电影?

4.demo源码

pytho多页怎样爬取电影?

pytho多页怎样爬取电影?

weinxin
我的微信公众号
爱真理,得永生!          爱在灵灵久博客,网罗天下,福利大家!

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: