python爬虫获取em第一个_Python爬虫入门实战之猫眼电影数据抓取(实战篇)

项目实战

静态网页实战

本节我们将为大家展现一个完整爬虫的大致过程,此次项目内容为提取猫眼电影TOP100榜中的所有电影信息并存储至CSV文件中,其首页地址为http://maoyan.com/board/4,在3.2.2中我们已经获取过第一页中的所有电影名了,但是如何获取第二页、第三页的数据呢,即获取第二页第三页对应的URL,那么我们可以在浏览器中不断翻页寻找地址栏中URL的变化规律:第二页: http://maoyan.com/board/4?offset=10 第三页: http://maoyan.com/board/4?offset=20 第四页: http://maoyan.com/board/4?offset=30 ......

我们看见URL的改变规律就是参数offset值不断偏移,每页偏移的值为10,由此我们可以编写一个获取每页数据函数,接收参数就是页码数:import requests headers = {     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36' } # 偏移参数,默认为0,即为第一页 params = {     'offset': 0 } def get_html(page):     '''     获取一页html页面     :param page: 页数     :return: 该页html页面     '''     params['offset'] = page * 10     url = 'http://maoyan.com/board/4'     try:         response = requests.get(url, headers=headers, params=params)         if response.status_code == 200:             html = response.text             return html         else:             return -1     except:         return None

当我们获取到html页面后,就可以提取相应的电影信息了,比如榜单张每一项电影都会有的属性:电影名称,主演,上映时间,评分等信息。提取信息有多种方式,下面我们利用正则表达式提取电影信息:def parse_infor(html):     '''     提取html页面中的电影信息     :param html: html页面     :return: 电影信息列表     '''     # 编写正则字符串规则,提取 电影名,主演,上映时间,评分信息     pat = re.compile('

.*?(.*?).*?(.*?).*?(.*?).*?
.*?.*?(.*?)(.*?).*?
.*?.*?', re.S)     # 得到一个二重列表     results = re.findall(pat, html)     one_page_film = []     if results:         for result in results:             film_dict = {}             # 获取电影名信息             film_dict['name'] = result[0]             # 获取主演信息             start = result[1]             # 替换字符串中的 '\n' 字符,即换行字符             start.replace('\n', '')             # 去掉字符串两边的空格,并使用切片去除字符串开头的'主演:'三个字符             start = start.strip()[3:]             film_dict['start'] = start             # 获取上映时间信息             releasetime = result[2]             # 使用切片去除字符串开头的'上映时间:'五个字符             releasetime = releasetime[5:]             film_dict['releasetime'] = releasetime             # 获取评分信息,由于评分是有两个字符拼接的,这里我们提取后也需要进行拼接操作             left_half =result[3]             right_half = result[4]             score = left_half + right_half             film_dict['score'] = score             # 打印该电影信息:             print(film_dict)             # 将该电影信息字典存入一页电影列表中             one_page_film.append(film_dict)         return one_page_film     else:         return None
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值