php抓取网页匹配url( 一下格式文件介绍一下模块中的几个简单功能(图))
优采云 发布时间: 2021-11-18 09:21php抓取网页匹配url(
一下格式文件介绍一下模块中的几个简单功能(图))
Python使用re正则表达式抢豆瓣电影Top250排名
使用 request 和 re 获取电影名称、电影年份、电影评分和电影排名的评论人数,并将它们写为 .csv 文件
先介绍一下re模块中的几个简单常用的方法
重新模块
几个简单的功能
1. findall
# findall :匹配字符串中所有符合正则的内容
import re
result = re.findall(r"\d+", "你好我的电话是123456,他的电话是654321")
print(result)
>>>['123456', '654321']
2. 查找器
# finditer :匹配字符串中所有的内容(返回迭代器)
result2 = re.finditer(r"\d+", "你好我的电话是123456,他的电话是654321")
for i in result2:#从迭代器中取数据
print(i)
>>>
>>>
for i in result2:#从迭代器中取数据
print(i.group()) #使用group()方法直接输出match到的数据
>>>123456
>>>654321
3.搜索
#search 只要找到一个结果就返回match对象,需要使用group()方法取数据
result3 = re.search(r"\d+", "你好我的电话是123456,他的电话是654321")
print(result3.group())
>>>123456
print(result3.group())
>>>123456#不会继续往后找
4.匹配
#match 从头开始匹配,相当于默认在正则表达式前面加了"^"
result3 = re.match(r"\d+", "你好我的电话是123456,他的电话是654321")
print(result3.group()) #报错,数据为空
5.预加载正则表达式
当一个正则表达式需要多次使用时,为了提高执行效率,可以预加载正则表达式。
#预加载正则表达式
obj = re.compile(r"正则表达式")
#使用方式
result = obj.finditer("你好我的电话是123456,他的电话是654321")
for i in result2:#从迭代器中取数据
print(i.group()) #使用group()方法直接输出match到的数据
步
获取页面源码——>requests
通过re和正则化提取有效信息——>re
代码
import requests #导入请求包
import re #正则
url = "https://movie.douban.com/top250"
#添加User-Agent
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}
resp = requests.get(url, headers=headers) #获取响应数据
page_content = resp.text #提取源代码
#解析数据
obj = re.compile(r'.*?.*?(?P.*?).*?<p class="">.*?
.*?(?P.*?) .*?(?P.*?).*?(?P.*?)人评价', re.S) #书写正则表达式(关键在于寻找定位标签)
result = obj.finditer(page_content)#利用正则来提取数据,将电影名称存放在name组,年份存在year组,评分存在score组,评价人数存在people组(返回迭代器)
for i in result:
print(i.group("name"))
print(i.group("year").strip())#去除year的多余空格
print(i.group("score"))
print(i.group("people"))
print("Over!")
提升
在上面的例子中,我们抓取了本页的数据,但无法获取下一页的数据。观察下一页的网址,发现跳转的页数其实是url中某个参数的变化,而且是有规律的变化。本例中,第二页的网址为“”,第三页的网址为“”。即start=后面的参数改变,每跳转一个页面,参数加25.
然后我们可以将参数设置为一个变量,在获取到每一页后将其值加25,然后跳转到下一页。接下来以爬取10页为例,将数据写入.csv格式文件
<p>import requests #导入请求包
import re #正则
import csv #导入scv模块用于数据读写
index = 0 #页面跳转参数
f = open("data.csv", mode="a", newline='') #新建并打开名为data.csv的文件用于写入数据
while index