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按照多个字符对字符串进行分割的方法
Mar 17 Python
windows 10下安装搭建django1.10.3和Apache2.4的方法
Apr 05 Python
Python2与python3中 for 循环语句基础与实例分析
Nov 20 Python
Python基于FTP模块实现ftp文件上传操作示例
Apr 23 Python
python爬虫 execjs安装配置及使用
Jul 30 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
Sep 20 Python
使用python远程操作linux过程解析
Dec 04 Python
Python使用py2neo操作图数据库neo4j的方法详解
Jan 13 Python
django自定义非主键自增字段类型详解(auto increment field)
Mar 30 Python
完美解决pycharm 不显示代码提示问题
Jun 02 Python
python输入中文的实例方法
Sep 14 Python
利用Python实现最小二乘法与梯度下降算法
Feb 21 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
PHP程序员编程注意事项
2008/04/10 PHP
php和jquery实现地图区域数据统计展示数据示例
2014/02/12 PHP
PHP实现的QQ空间g_tk加密算法
2015/07/09 PHP
PHP读取文件的常见几种方法
2016/11/03 PHP
AJAX分页的代码(后台asp.net)
2011/02/14 Javascript
如何让DIV可编辑、可拖动示例代码
2013/09/18 Javascript
10分钟学会写Jquery插件实例教程
2014/09/06 Javascript
浅析JavaScript 调试方法和技巧
2015/10/22 Javascript
jQuery插件开发精品教程让你的jQuery提升一个台阶
2016/01/27 Javascript
js实现通过开始结束控制的计时器
2019/02/25 Javascript
Jquery的autocomplete插件用法及参数讲解
2019/03/12 jQuery
js实现图片局部放大效果详解
2019/03/18 Javascript
jQuery+ajax实现批量删除功能完整示例
2019/06/06 jQuery
详解将微信小程序接口Promise化并使用async函数
2019/08/05 Javascript
浅谈layui使用模板引擎动态渲染元素要注意的问题
2019/09/14 Javascript
layui实现数据表格隐藏列的示例
2019/10/25 Javascript
微信小程序文章详情功能完整实例
2020/06/03 Javascript
js编写简易的计算器
2020/07/29 Javascript
JS实现拖拽元素时与另一元素碰撞检测
2020/08/27 Javascript
用smtplib和email封装python发送邮件模块类分享
2014/02/17 Python
Python中pip安装非PyPI官网第三方库的方法
2015/06/02 Python
Python中的fileinput模块的简单实用示例
2015/07/09 Python
在pandas多重索引multiIndex中选定指定索引的行方法
2018/11/16 Python
python Pexpect 实现输密码 scp 拷贝的方法
2019/01/03 Python
对python多线程SSH登录并发脚本详解
2019/02/14 Python
Numpy之将矩阵拉成向量的实例
2019/11/30 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
Selenium启动Chrome时配置选项详解
2020/03/18 Python
利用python中的matplotlib打印混淆矩阵实例
2020/06/16 Python
纪伊国屋泰国网上书店:Kinokuniya泰国
2017/12/24 全球购物
英国浴室洗脸盆购物网站:Click Basin
2018/06/08 全球购物
Java的类与C++的类有什么不同
2014/01/18 面试题
大四学生找工作的自荐信
2014/03/27 职场文书
党员反对四风问题思想汇报
2014/09/12 职场文书
2014年保险公司工作总结
2014/11/22 职场文书
《原神》新角色演示“神里绫人:林隐泓洄” 宠妹狂魔
2022/04/03 其他游戏