写入文件

在将我们爬取到的内容,存入文件之前。首先,我们将爬取到的内容存放到字典中,便于我们进行修改,因为可以看到我们之前爬取到的内容都是存放在元组中的,而元组中的元素是不允许修改的,所以我们先提取元组中的元素将其放入字典中:

运行结果如下:

随后,我们将提取的结果写入文件,这里直接写入到一个文本文件中。这里通过JSON库的dumps( )方法实现字典的序列化,并指定ensure_ascii参数为False,这样可以保证输出结果是中文形式而不是Unicode编码。代码如下:

通过调用write_to_file( )方法即可实现将字典写入文本文件的过程,此处的content参数就是一部电影的提取结果,是一个字典。

整合代码

最后,实现main( )方法来调用前面实现的方法,将单页的电影结果写入到文件。相关代码如下:

到此为止,我们就完成了单页电影的提取,也就是首页的10部电影可以成功提取并保存到文本文件中了。

分页提取

因为我们需要爬取的是TOP100的电影,所以还需要遍历一下,给这个链接传入offset参数,实现其他90部电影的爬取,此时添加如下调用并且对应地修改main( )函数即可:

这样,我们就可以爬取到我们猫眼电影TOP100的电影了,再稍微整理一下,完整的代码如下:

运行结果

最后,我们运行了一下代码,由于结果过于冗长,我们这里只截取部分代码结果:

这时程序运行结束,我们的目录中多出了一个我们创建的文件,result.txt,我们打开这个文件就可以看到里面的内容啦,正是我们爬取的TOP100的电影的信息:

可以看到,电影信息已经全部保存到文本文件中了,大功告成!本节中,我们通过爬取猫眼TOP100的电影信息练习了requests和正则表达式的用法。这是一个最基础的实例,希望大家可以通过这个实例对爬虫的实现有一个最基本的思路,也对这两个库的用法有更深一步的了解。

虽然我们实现了一个最基本的爬虫,但提取页面信息时使用的是正则表达式,虽然可以灵活的解决问题,但是相对而言,写正则表达式还是有点繁琐的,而且万一某些地方写错了,就可能导致匹配失败,所以使用正则表达式提取页面信息多多少少还是有些不方便。

对于网页的节点来说,它可以定义id、class或其他属性。而且节点之间还有层次关系,在网页中可以通过Xpath或CSS选择器来定位一个或多个节点。那么,在页面解析时,利用Xpath或CSS选择器来提取某个节点,然后再调用相应方法获取它的正文内容或属性,不就可以提取我们想要的任意信息了嘛?

在Python中,怎么样实现这个操作呢?其实这种解析库已经非常多了,其中比较强大的库有lxml、Beautiful Soup、pyquery等,我们下面会陆续介绍这三个解析库的用法,有了它们,我们就不用再为不会写正则表达式而发愁了,而且解析的效率也会大大提高。

« 有涵养的古风名字怎么起?取自楚辞《天问》篇 美白祛斑的方法:看了你就知道 »