50 行代码教你爬取猫眼电影 TOP100 榜所有信息

Wesley13 等级 493 0 0
标签: html代码

对于Python初学者来说,爬虫技能是应该是最好入门,也是最能够有让自己有成就感的,今天,恋习Python的手把手系列,手把手教你入门Python爬虫,爬取猫眼电影TOP100榜信息,将涉及到基础爬虫架构中的HTML下载器、HTML解析器、数据存储器三大模块:

HTML下载器:利用requests模块下载HTML网页;
HTML解析器:利用re正则表达式解析出有效数据
数据存储器:将有效数据通过文件或者数据库的形式存储起来

一、构造HTML下载器

import requests

from requests.exceptions import RequestException

headers = {'User-Agent':'Mozilla/5.0 '}

def get_one_page(url):    

      try:        

        res = requests.get(url,headers = headers)        

       if res.status_code == 200:

           return res.text

       return None

   except RequestException:

       return None

二、构造HTML解析器

def parse_one_page(html):

      pattern = re.compile('

.*?board-index.*?>(\d+).*?data-src="(.*?)".*?name"><a'                         +'.*?>(.*?).*?star">(.*?)

.*?releasetime">(.*?)

'                         +'.*?integer">(.*?).*?fraction">(.*?).*?
',re.S)    

   items = re.findall(pattern,html)

   for item in items:

       yield{

           'index': item[0],

           'image': item[1],

           'title': item[2],

           'actor': item[3].strip()[3:],

           'time': item[4].strip()[5:],

           'score': item[5] + item[6]

       }

注意:1.在函数中本来该return的地方用yield,如果用return,在第一轮循环就会跳出,结果文件只会有一部电影。如果用yield,函数返回的就是一个生成器,而生成器作为一种特殊的迭代器,可以用for——in方法,一次一次的把yield拿出来;

2.re.findall(pattern,string[,flags]):搜索整个string,以列表的形式返回能匹配的全部子串,其中参数是匹配模式,如re.S表示点任意匹配模式,改变“.”的行为。

三、构造数据存储器

def write_to_file(content):

   with open ('result.txt', 'a',encoding='utf-8') as f:

       f.write(json.dumps(content,ensure_ascii=False) + '\n')

       f.close()

注意事项:1.为什么ensure_ascii=False?原因是json默认是以ASCII来解析code的,由于中文不在ASCII编码当中,因此就不让默认ASCII生效;

2.要写入特定编码的文本文件,请给open()函数传入encoding参数,将字符串自动转换成指定编码。细心的童鞋会发现,以'w'模式写入文件时,如果文件已存在,会直接覆盖(相当于删掉后新写入一个文件)。如果我们希望追加到文件末尾怎么办?可以传入'a'以追加(append)模式写入。

接下来就是构造主函数,初始化各个模块,传入入口URL,按照运行流程执行上面三大模块:

def main(offset):
    url = 'http://maoyan.com/board/4?offset=' + str(offset)
    html = get_one_page(url)
    for item in parse_one_page(html):
        print(item)
        write_to_file(item)

if __name__ == '__main__':
    p = Pool()
    p.map(main,[i*10 for i in range(10)])

注意:为了提高速度,我们引入Pool模块,用多线程并发抓取

执行代码后,结果如下:

50 行代码教你爬取猫眼电影 TOP100 榜所有信息

本文中介绍了基础爬虫架构主要的的三个模块(HTML下载器、HTML解析器、数据存储器),无论大型还是小型爬虫都不会脱离这三个模块,也希望大家通过这个小小的练习对整个爬虫有个清晰的认识,欢迎大家一起谈论学习交流。

收藏
评论区

相关推荐

一个爬虫的故事:这是人干的事儿?
本文转载自 轩辕之风的文章,链接 https://mp.weixin.qq.com/s/YygbUWpa2mbPZPuPNhdt2w 爬虫原理 我是一个爬虫,每天穿行于互联网之上,爬取我需要的一切。 image.png(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/656d
创建免费ip代理池
&ensp;&ensp;&ensp;&ensp; 反爬技术越来越成熟,为了爬取目标数据,必须对爬虫的请求进行伪装,骗过目标系统,目标系统通过判断请求的访问频次或请求参数将疑似爬虫的ip进行封禁,要求进行安全验证,通过python的第三方库faker可以随机生成header伪装请求头,并且减缓爬虫的爬取速度,能很好的避过多数目标系统的反扒机制,但对一些安全等级
Python爬虫 | Selenium爬取当当畅销图书排行
01 前言 上篇文章我们爬取了,心情相当愉悦,今天这篇文章我们使用Selenium来爬取当当网的畅销图书排行。正所谓书中自有黄金屋,书中自有颜如玉,我们通过读书学习来提高自身的才华,自然能有荣华富贵,也自然少不了漂亮小姐姐。 02 准备工作 在爬取数据前,我们需要安装Selenium库以及Chrome浏览器,并配置好Chro
实战|手把手教你用Python爬取存储数据,还能自动在Excel中可视化!
大家好,在之前我们讲过如何用Python构建一个带有GUI的爬虫小程序,很多本文将迎合热点,延续上次的NBA爬虫GUI,探讨如何爬取虎扑NBA官网数据。 并且将数据写入Excel中同时自动生成折线图,主要有以下几个步骤。本文将分为以下两个部分进行讲解 在虎扑NBA官网球员页面中进行爬虫,获取球员数据。 清洗整理爬取的球员数据,对其进行可视化。
全球最美Top100女神出炉,国内六人上榜,我Python发现了这些秘密...
最近一段时间,国外媒体TOP BEAUTY WORLD选取了全球最帅男性和最美女性前100名,肖战成为了该排行榜历届以来首位登顶的亚洲人。这一消息立刻成为了流量的热点。 小编特地去查了一下,想看一下榜单中的最美小姐姐的信息。可是现在还没有最美小姐姐的文字榜单信息。但是小编却查到了2019年年底发布的上一届的全球最美女性前一百名的详细榜单,包含了姓名、国
爬虫
爬虫什么是爬虫使用编程语言所编写的一个用于爬取web或app数据的应用程序怎么爬取数据1.找到要爬取的目标网站、发起请求2.分析URL是如何变化的和提取有用的URL3.提取有用的数据爬虫数据能随便爬取吗? 遵守robots.txt协议 爬虫的分类通用网络爬虫百度,Google等搜索引擎,从一些初识的URL扩展到整个网站,主要为门户站点搜索引擎和大型网站服务采
java实现根据起点终点和日期查询去哪儿网的火车车次和火车站点信息
**本文章为原创文章,转载请注明,欢迎评论和改正。** 一,分析   之前所用的直接通过HTML中的元素值来爬取一些网页上的数据,但是一些比较敏感的数据,很多正规网站都是通过json数据存储,这些数据通过HTML元素是爬取不到的,所以只能通过json数据的api接口来爬取数据。 二,网站处理   1,打开去哪儿网的网站https://train.qu
java爬虫
想找一些图片做桌面背景,但是又不想一张张去下载,后来就想到了爬虫。。。 对于爬虫我也没具体用过,在网上一顿搜索后写了个小demo。 爬虫的具体思路就是: 1.调用url爬取网页信息 2.解析网页信息 3.保存数据 刚开始还用正则去匹配,获取img标签中的src地址,但是发现有很多不便(主要我正则不太会),后来发现了jsoup这个神器。 jsoup
50 行代码教你爬取猫眼电影 TOP100 榜所有信息
对于Python初学者来说,爬虫技能是应该是最好入门,也是最能够有让自己有成就感的,今天,恋习Python的手把手系列,手把手教你入门Python爬虫,爬取猫眼电影TOP100榜信息,将涉及到基础爬虫架构中的HTML下载器、HTML解析器、数据存储器三大模块: HTML下载器:利用requests模块下载HTML网页; HTML解析器:利用re正则表达
Ajax爬取豆瓣电影目录(Python)
下面的分析相当于一个框架,搞懂之后,对于类似的文字爬取,我们也可以实现。就算不能使用Ajax方法,我们也能够使用相同思想去爬取我们想要的数据。 豆瓣电影排行榜分析 ========= **网址**:[https://movie.douban.com/explore#!type=movie&tag=%E7%83%AD%E9%97%A8&sort=recom
Python爬虫从入门到放弃(十六)之 Scrapy框架中Item Pipeline用法
原文地址https://www.cnblogs.com/zhaof/p/7196197.html 当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的python类,负责接收到item并通过它执行一些行为,同时也决定此Item是否继续通过pipeline,或者被丢
Python爬虫实践 —— 4.好听音乐网轻音乐资源下载
第三章的requests库阶段性demo,爬取好听音乐网的榜上歌曲。 此网站没有js混淆,音乐资源链接有规律,适合爬虫新手上手。 首先观察首页和音乐榜的url链接关系,我们先手动模拟下载,chrome f12获取response,可探查到url规律如下: 1. ![](https://oscimg.oschina.net/oscnet/485087a
Scrapy爬虫及案例剖析
![](https://oscimg.oschina.net/oscnet/up-ede1a7a938f161dbdaf6489a266e85e0347.JPEG) > 由于互联网的极速发展,所有现在的信息处于大量堆积的状态,我们既要向外界获取大量数据,又要在大量数据中过滤无用的数据。针对我们有益的数据需要我们进行指定抓取,从而出现了现在的爬虫技术,通过爬
Scrapy爬虫框架
### (1)、简介 在糗事百科爬虫中我们的爬虫是继承scrapy.Spider类的,这也是基本的scrapy框架爬虫,在这个爬虫中我们自己在解析完整个页面后再获取下一页的url,然后重新发送了一个请求,而使用CrawlsSpider类可以帮助我们对url提出条件,只要满足这个条件,都进行爬取,CrawlSpider类继承自Spider,它比之前的Spid
python爬虫采集今日头条实践
Python怎样爬取今日头条数据?针对这个问题,今天我们就详细的介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。今日头条近几年做的很强大,自上线以来,围绕内容载体和分发方式两个维度不断丰富,如今包含图文、视频、微头条、专栏、搜索、直播等多种内容形式。根据最新中国联通发布的App排行榜,今日头条稳居新闻资讯行业NO.1。面