Python如何利用正则表达式爬取网页信息及图片


Posted in Python onApril 17, 2021

一、正则表达式是什么?

概念:

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。

个人理解:

简单来说就是使用正则表达式来写一个过滤器来过滤了掉杂乱的无用的信息(eg:网页源代码…)从中来获取自己想要的内容

二、实战项目

1.爬取内容

获取上海所有三甲医院的名称并保存到.txt文件中

2.访问链接

上海三甲医院网站 link:https://yyk.99.com.cn/sanjia/shanghai/

3.正则表达式书写的灵感

进入网站查看本页面的源代码发现 :医院的名称都是放在一个

<div class="province-box"> ...... </div>

盒子里我们只需要直接把这个盒子里面的数据过滤一下就行

正则表达式:

法一:

1.一级过滤 : 

   <div class="province-box">(.*)<div class="wrap-right">

开头是:<div class="province-box"> (.*)  结尾是:<div class="wrap-right">

2.二级过滤:

 title="(.*[院心部])*)" 获取title=" " 里面的信息

法二:

优化后一次性过滤:

 <li><a href="/[^/].*/" rel="external nofollow" rel="external nofollow" target="_blank" title="(.*)">

贴图片

开头是:

Python如何利用正则表达式爬取网页信息及图片

结尾是:

Python如何利用正则表达式爬取网页信息及图片

4.项目源代码

import requests
import re

url = "https://yyk.99.com.cn/sanjia/shanghai/"
# 模拟浏览器的访问
headers ={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) '
                        'Gecko/20100101 Firefox/87.0'}
res = requests.get(url,headers=headers)

if res.status_code == 200:
	#1.获取网页源代码
    raw_text = res.text
    
    #2.正则表达式书写:
    #2.2注意:正则表达式默认匹配的是一行  我们的源代码是多行匹配的要加另一个参数 re.DOTALL
	#2.3正则法一:
		#re.findall() 返回的是lsit集合 一次过滤
    re_res = re.findall(r'<div class="province-box">(.*)<div class="wrap-right">', raw_text,re.DOTALL)
    	#re_res[0] 获取下标是的数据    二次过滤
    res=re.findall(r'title="(.*[院心部])*)"',re_res[0])
    	#检查打印获取到的信息
	print(res)
	
	#2.4正则法二:
		#(优化)不用二次过滤 一次过滤就解决了
    # re_list = re.findall(r'<li><a href="/[^/].*/" rel="external nofollow"  rel="external nofollow"  target="_blank" title="(.*)">', res.text)
    #print(re_list)

    # 写入文件中
    read = open("上海医院名单", "w", encoding='utf-8')
    for i in res:
        read.write(i)
        read.write("\n")
    read.close()
else:
    print("error")

项目目录:

Python如何利用正则表达式爬取网页信息及图片

部分结果:

Python如何利用正则表达式爬取网页信息及图片

python 正则表达式-提取图片地址

import os,sys,time,json,time
import socket,random,hashlib
import requests,configparser
import json,re
from datetime import datetime
from multiprocessing.dummy import Pool as ThreadPool


def getpicurl(url):
    url = "http://www.mzitu.com/zipai/comment-page-352"
    html = requests.get(url).text
    pic_url = re.findall('img src="(.*?)"',html,re.S)
    for key in pic_url:
        print(key + "\r\n")
    #print(pic_url)
    
getpicurl("http://www.mzitu.com/zipai/comment-pag.e-352")

输出结果:

python mmm.py
http://wx3.sinaimg.cn/mw1024/9d52c073gy1fsvu6578k1j20sg15nk4x.jpg

http://wx1.sinaimg.cn/mw1024/9d52c073gy1fsvu64q4lgj20j60nz0ua.jpg

http://wx1.sinaimg.cn/mw1024/9d52c073gy1fsvu67hhbaj20sg110toc.jpg

http://wx2.sinaimg.cn/mw1024/9d52c073gy1fsvu66bw56j20sg0zjtlr.jpg

http://wx1.sinaimg.cn/mw1024/9d52c073gy1fsvu65vvvtj20sg0mmtfc.jpg

http://wx2.sinaimg.cn/mw1024/9d52c073gy1fsvu66gtnzj20sg0zk48h.jpg

http://wx1.sinaimg.cn/mw1024/9d52c073gy1fsvu65q1qyj20sg11vtmo.jpg

http://wx3.sinaimg.cn/mw1024/9d52c073gy1fsvu64wgejj20e60iwtax.jpg

http://wx1.sinaimg.cn/mw1024/9d52c073gy1fsvu66a8xfj20lt0rptgw.jpg

http://wx4.sinaimg.cn/mw1024/9d52c073gy1fsnr6n7n66j20k00ozn52.jpg

http://wx1.sinaimg.cn/mw1024/9d52c073gy1fsnr6njhjyj20sg0zkn88.jpg

http://wx3.sinaimg.cn/mw1024/9d52c073gy1fsnr6n2zmyj20sg0ldten.jpg

总结

到此这篇关于Python如何利用正则表达式爬取网页信息及图片的文章就介绍到这了,更多相关Python正则表达式爬取内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现比较两个列表(list)范围
Jun 12 Python
Python实现螺旋矩阵的填充算法示例
Dec 28 Python
python的staticmethod与classmethod实现实例代码
Feb 11 Python
Python requests发送post请求的一些疑点
May 20 Python
python 集合 并集、交集 Series list set 转换的实例
May 29 Python
python处理csv中的空值方法
Jun 22 Python
使用Django清空数据库并重新生成
Apr 03 Python
在Keras中CNN联合LSTM进行分类实例
Jun 29 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
Jul 01 Python
pytorch使用horovod多gpu训练的实现
Sep 09 Python
python 进制转换 int、bin、oct、hex的原理
Jan 13 Python
Python3 类型标注支持操作
Jun 02 Python
python中sys模块的介绍与实例
Apr 17 #Python
Python中os模块的简单使用及重命名操作
Apr 17 #Python
Python利器openpyxl之操作excel表格
Pytest实现setup和teardown的详细使用详解
pytest配置文件pytest.ini的详细使用
Apr 17 #Python
用Python简陋模拟n阶魔方
Python OpenCV快速入门教程
You might like
全国FM电台频率大全 - 30 宁夏回族自治区
2020/03/11 无线电
深入PHP异步执行的详解
2013/06/03 PHP
PHP输出九九乘法表代码实例
2015/03/27 PHP
PHP与服务器文件系统的简单交互
2016/10/21 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
使用PHPExcel导出Excel表
2018/09/08 PHP
javascript跨域原因以及解决方案分享
2015/04/08 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
jQuery实现固定在网页顶部的菜单效果代码
2015/09/02 Javascript
Javascript+CSS3实现进度条效果
2016/10/28 Javascript
canvas基础绘制-绚丽倒计时的实例
2017/09/17 Javascript
Echart折线图手柄触发事件示例详解
2018/12/16 Javascript
Object.keys() 和 Object.getOwnPropertyNames() 的区别详解
2020/05/21 Javascript
python zip文件 压缩
2008/12/24 Python
Python中Django 后台自定义表单控件
2017/03/28 Python
python字符串string的内置方法实例详解
2018/05/14 Python
python 高效去重复 支持GB级别大文件的示例代码
2018/11/08 Python
Python实现繁体中文与简体中文相互转换的方法示例
2018/12/18 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
Django model update的多种用法介绍
2020/03/28 Python
Python函数参数类型及排序原理总结
2019/12/19 Python
python清空命令行方式
2020/01/13 Python
Python视频编辑库MoviePy的使用
2020/04/01 Python
解决Keras 中加入lambda层无法正常载入模型问题
2020/06/16 Python
巴西图书和电子产品购物网站:Saraiva
2017/06/07 全球购物
Sephora丝芙兰印尼官方网站:购买化妆品和护肤品
2018/07/02 全球购物
澳大利亚排名第一的狂热牛仔品牌:ONETEASPOON
2018/11/20 全球购物
Nisbets法国:英国最大的厨房和餐饮设备供应商
2019/03/18 全球购物
万能检讨书
2015/01/27 职场文书
三孔导游词
2015/02/05 职场文书
单位考核鉴定意见
2015/06/05 职场文书
穆斯林的葬礼读书笔记
2015/06/26 职场文书
导游词之河北野三坡
2019/12/11 职场文书
CSS控制继承中的height能变为可继承吗
2022/06/10 HTML / CSS
html解决浏览器记住密码输入框的问题
2023/05/07 HTML / CSS