项目实战
静态网页实战
本节我们将为大家展现一个完整爬虫的大致过程,此次项目内容为提取猫眼电影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('