正则表达式

您所在的位置:网站首页 爬虫简单实例分析 正则表达式

正则表达式

2023-12-13 13:35| 来源: 网络整理| 查看: 265

文章目录 b站新番排行榜的爬取1.构造请求2. 正则表达式构造3.数据处理 猫眼排行的爬取1. 构造请求2.正则提取3.整合代码4.分页爬取5.完整代码

前面几篇博客主要介绍的是对于爬虫所需要的库以及相关知识点的介绍,这篇博客就是让我们练习一下真正的爬虫该怎么写。下面我主要讲两个实例,一个是b站新番的信息爬取,另一个是猫眼电影TOP100的相关信息爬取。

b站新番排行榜的爬取

首先我们需要request和re模块,我采用函数结构话来写爬虫,你们可以看看,首先我们找到我们需要爬取的详情页b站新番排行榜。 在这里插入图片描述 我们需要爬取得信息有上面的新番排名,动漫名称,播放量,弹幕量,追番数,以及最后的综合得分。首先我们看一下网页源代码,发现信息都在源代码中。怎么看源代码我就不讲解了。我就直接开始讲怎么开始爬虫吧。

1.构造请求

我采用函数的形式,设置相关参数,然后请求的时候就直接传递url这个参数就行啦。

import requests from requests.exceptions import RequestException import re def get_page(url): try: response = requests.get(url) if response.status_code == 200: return response.text return None except RequestException: return None

由于这个网站比较简单,对于请求头等参数我们不需要配置,然后我们直接调用它。

url='https://www.bilibili.com/ranking/bangumi/13/0/3' html =get_one_page(url) 2. 正则表达式构造

这里我就不显示返回的结果,我们发现返回的信息就是网页源代码了,现在我们需要分析了,因为每部新番在网页展示的时候,也是一种列表形式的呈现,所以我们只要找到相似的列表单元格式,就可以用正则表达式匹配。在我看了一会源代码发现:

1擅长捉弄的高木同学 第二季全12话2890.3万100.0万168.2万3604904综合得分

每一条新番的信息都是这样呈现的,现在我们只需要将对应正则表达式写出来就可以了,结合上篇博客,我花了一两分写的一个比较简单的刚好匹配出来,你们可以看一下:

(\d+).*?href="(.*?)".*? 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36' } def parse_page(html): pattern = re.compile('.*?board-index.*?>(.*?).*?data-src="(.*?)".*?name.*?a.*?>(.*?).*?star.*?>(.*?)

.*?releasetime.*?>(.*?)

.*?integer.*?>(.*?).*?fraction.*?>(.*?).*?', re.S) items = re.findall(pattern, html) for item in items: print('index', item[0]) print('image', item[1]) print('title', item[2]) print('actor', item[3].strip()[3:]) print('time', item[4].strip()[5:]) print('score', item[5]+ item[6]) def main(offset): url = 'http://maoyan.com/board/4?offset=' + str(offset) html = get_page(url) parse_page(html) if __name__ == '__main__': for i in range(10): main(offset=i * 10) time.sleep(1)

猫眼存在轻微的反爬虫,如果速度过快,则会无响应,所以这里又增加了一个延时等待。最后我们看看运行结果,只显示部分:

index 1 image https://p1.meituan.net/movie/20803f59291c47e1e116c11963ce019e68711.jpg@160w_220h_1e_1c title 霸王别姬 actor 张国荣,张丰毅,巩俐 time 1993-01-01 score 9.5 index 2 image https://p0.meituan.net/movie/283292171619cdfd5b240c8fd093f1eb255670.jpg@160w_220h_1e_1c title 肖申克的救赎 actor 蒂姆·罗宾斯,摩根·弗里曼,鲍勃·冈顿 time 1994-09-10(加拿大) score 9.5 index 3 image https://p0.meituan.net/movie/289f98ceaa8a0ae737d3dc01cd05ab052213631.jpg@160w_220h_1e_1c title 罗马假日 actor 格利高里·派克,奥黛丽·赫本,埃迪·艾伯特 time 1953-09-02(美国) score 9.1 index 4 image https://p1.meituan.net/movie/6bea9af4524dfbd0b668eaa7e187c3df767253.jpg@160w_220h_1e_1c title 这个杀手不太冷 actor 让·雷诺,加里·奥德曼,娜塔莉·波特曼 time 1994-09-14(法国) score 9.5 index 5 image https://p1.meituan.net/movie/b607fba7513e7f15eab170aac1e1400d878112.jpg@160w_220h_1e_1c title 泰坦尼克号 actor 莱昂纳多·迪卡普里奥,凯特·温丝莱特,比利·赞恩 time 1998-04-03 score 9.5 index 6 image https://p0.meituan.net/movie/da64660f82b98cdc1b8a3804e69609e041108.jpg@160w_220h_1e_1c title 唐伯虎点秋香 actor 周星驰,巩俐,郑佩佩 time 1993-07-01(中国香港) score 9.1 index 7 image https://p0.meituan.net/movie/46c29a8b8d8424bdda7715e6fd779c66235684.jpg@160w_220h_1e_1c title 魂断蓝桥 actor 费雯·丽,罗伯特·泰勒,露塞尔·沃特森 time 1940-05-17(美国) score 9.2 index 8 image https://p0.meituan.net/movie/223c3e186db3ab4ea3bb14508c709400427933.jpg@160w_220h_1e_1c title 乱世佳人 actor 费雯·丽,克拉克·盖博,奥利维娅·德哈维兰 time 1939-12-15(美国) score 9.1 index 9 image https://p1.meituan.net/movie/ba1ed511668402605ed369350ab779d6319397.jpg@160w_220h_1e_1c title 天空之城 actor 寺田农,鹫尾真知子,龟山助清 time 1992-05-01 score 9.0 index 10 image https://p0.meituan.net/movie/b0d986a8bf89278afbb19f6abaef70f31206570.jpg@160w_220h_1e_1c title 辛德勒的名单 actor 连姆·尼森,拉尔夫·费因斯,本·金斯利 time 1993-12-15(美国) score 9.2

这个爬虫是不是很简单,通过这两个简单的实例我们了解到爬虫的基础流程,也大致掌握前面这些库的用法,此外我们在做数据采集少不了保存,后面我会有一篇博客专门介绍这个。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3