您的位置:首页 > 新闻资讯 >文章内容
爬虫实战:抓取电影排行的详细流程
来源:互联网 作者:admin 时间:2019-04-02 16:22:26

  爬虫可以应用于许多行业,几乎是可以爬取全部的数据,比如说想知道最近最热门的电影,哪些题材电影比较受欢迎,还有一些电影的详细信息等等,这些都是可以通过爬虫进行爬取获取的。最为一名爬虫新手,多练是最快掌握爬虫编写的方法,今天我们来实践下爬取电影排行的一些操作:


  1.抓取分析


  找到我们需要抓取的目标站点,打开之后便可以查看到榜单信息。比如,排名第一的电影是霸王别姬,页面中显示的有效信息有影片名称、主演、上映时间、上映地区、评分、图片等信息。这样获到页面之后,再用正则表达式提取出相关信息,就可以得到TOP10的所有电影信息了。


爬虫实战:抓取电影排行的详细流程


  接下来用代码实现这个过程。首先抓取第一页的内容。我们实现了get_one_page()方法,并给它传入url参数。然后将抓取的页面结果返回,再通过main()方法调用。初步代码实现如下:


爬虫实战:抓取电影排行的详细流程


  2.正则提取


  接下来,回到网页看一下页面的真实源码。在开发者模式下的Network监听组件中查看源代码。


爬虫实战:抓取电影排行的详细流程


  注意,这里不要在Elements选项卡中直接查看源码,因为那里的源码可能经过JavaScript操作而与原始请求不同,而是需要从Network选项卡部分查看原始请求得到的源码。查看其中一个条目的源代码:


爬虫实战:抓取电影排行的详细流程


  可以看到,一部电影信息对应的源代码是一个dd节点,我们用正则表达式来提取这里面的一些电影信息。首先,需要提取它的排名信息,随后需要提取电影的图片,再往后需要提取电影的名称,再提取主演、发布时间、评分等内容时,都是同样的原理。最后,正则表达式写为:


  

  • .*?board-index.*?>(.*?).*?data-src="(.*?)".*?name.*?a.*?>(.*?).*?star.*?>(.*?)

.*?releasetime.*?>(.*?).*?integer.*?>(.*?).*?fraction.*?>(.*?).*?


  这样一个正则表达式可以匹配一个电影的结果,里面匹配了7个信息。接下来,通过调用findall()方法提取出所有的内容。


  接下来,我们再定义解析页面的方法parse_one_page(),主要是通过正则表达式来从结果中提取出我们想要的内容,实现代码如下:


爬虫实战:抓取电影排行的详细流程


  这样就可以成功地将一页的10个电影信息都提取出来,这是一个列表形式,输出结果如下:


爬虫实战:抓取电影排行的详细流程


  但这样还不够,数据比较杂乱,我们再将匹配结果处理一下,遍历提取结果并生成字典,此时方法改写如下:


爬虫实战:抓取电影排行的详细流程


  这样就可以成功提取出电影的排名、图片、标题、演员、时间、评分等内容了,并把它赋值为一个个的字典,形成结构化数据。运行结果如下:


爬虫实战:抓取电影排行的详细流程


  到此为止,我们就成功提取了单页的电影信息。


  3.写入文件


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


爬虫实战:抓取电影排行的详细流程


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


  4.整合代码


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


爬虫实战:抓取电影排行的详细流程


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


  综上可知,抓取电影排行操作有些麻烦的,但整合之后,其实代码也并不是很多。本文主要是关于requests和正则表达式的用法,大家可以参考下的。


相关文章内容简介
推荐阅读
  • 23 2019-03
    哪里可以找到大量的优质代理IP?

    一个优质代理IP有多重要?或许有人说我就想用免费的,也不是照样能抓取到信息么?那么你敢大规模抓取吗?你敢使用分布式爬虫吗?你敢使用多线程吗?

  • 20 2019-03
    抓取安卓APP信息出现错误,是代理IP的问题吗?

    有时候在抓取APP信息时,无缘无故就出现错误了,但用其他手机测试又没有问题?这到底是什么原因导致的错误?会不会是使用代理IP的问题?我们分析一下:

  • 06 2019-05
    利用代理隐藏本地ip地址

    利用代理隐藏本地ip地址,这是怎么操作的?是先要找到个能用的代理IP吗?还是可以直接上网找个代理服务器使用的?平常使用的代理是否具有隐藏本地ip地址的作用?

  • 05 2019-05
    用了匿名代理IP还能检测本地IP么?

    用了匿名代理IP还能检测本地IP么?有些人是会有这样的担心,小编告诉大家,这并不一定的。因为匿名有高匿名和普通匿名的,自然是高匿名的效果好,普通匿名的效果相对差些,就是差这么

  • 20 2019-06
    暴力爬取网站被封IP地址

    暴力爬取网站被封IP地址,毕竟这些网站又不是你家的,凭什么给你随便爬取信息啊!这么粗鲁,直接的爬取,这给对方带去了麻烦,服务器压力大,不封你封谁呢,是吧。

  • 28 2019-01
    爬虫伪装成浏览器后可以更换IP,突破网站的反爬虫机制

    面对网站的反爬虫机制,爬虫应该怎么办呢?若是爬虫稍微加快速度爬取数据,很快就会被网站的反爬虫机制检测到异常,并进行封IP处理,这样爬虫就无法完成任务了。那么爬虫应该如何伪装

在线客服
大客户VIP渠道
点击这里给我发消息
讨论QQ群
HTTP代理IP爬虫
客服电话
13318873961