php抓取网页匹配url( 一下格式文件介绍一下模块中的几个简单功能(图))

优采云 发布时间: 2021-11-18 09:21

  php抓取网页匹配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&#39;.*?.*?(?P.*?).*?<p class="">.*?

.*?(?P.*?)&nbsp.*?(?P.*?).*?(?P.*?)人评价&#39;, 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=&#39;&#39;) #新建并打开名为data.csv的文件用于写入数据

while index

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线