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实现斐波那契递归函数的方法
Sep 08 Python
python中迭代器(iterator)用法实例分析
Apr 29 Python
自己使用总结Python程序代码片段
Jun 02 Python
从源码解析Python的Flask框架中request对象的用法
Jun 02 Python
TensorFlow 实战之实现卷积神经网络的实例讲解
Feb 26 Python
Python之list对应元素求和的方法
Jun 28 Python
pytorch 数据集图片显示方法
Jul 26 Python
python 提取tuple类型值中json格式的key值方法
Dec 31 Python
python 发送和接收ActiveMQ消息的实例
Jan 30 Python
详解Python sys.argv使用方法
May 10 Python
Python3 获取文件属性的方式(时间、大小等)
Mar 12 Python
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
Dec 27 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的Yii框架中View视图的使用进阶
2016/03/29 PHP
PHP实现的抓取小说网站内容功能示例
2019/06/27 PHP
在TP5数据库中四个字段实现无限分类的示例
2019/10/18 PHP
JavaScript 参考教程
2006/12/29 Javascript
javascript变量作用域使用中常见错误总结
2013/03/26 Javascript
原生js操作checkbox用document.getElementById实现
2013/10/12 Javascript
详解Javascript 装载和执行
2014/11/17 Javascript
javascript中String对象的slice()方法分析
2014/12/20 Javascript
jQuery+formdata实现上传进度特效遇到的问题
2016/02/24 Javascript
初步使用Node连接Mysql数据库
2016/03/03 Javascript
js实现楼层效果的简单实例
2016/07/15 Javascript
jquery animate动画持续运动的实例
2017/11/29 jQuery
Javascript网页抢红包外挂实现分享
2018/01/11 Javascript
浅谈angularJs函数的使用方法(大小写转换,拷贝,扩充对象)
2018/10/08 Javascript
Nuxt页面级缓存的实现
2020/03/09 Javascript
python sqlobject(mysql)中文乱码解决方法
2008/11/14 Python
Python使用Socket(Https)Post登录百度的实现代码
2012/05/18 Python
python并发编程之线程实例解析
2017/12/27 Python
Python爬虫工程师面试问题总结
2018/03/22 Python
python 执行文件时额外参数获取的实例
2018/12/18 Python
Python中zip()函数的简单用法举例
2019/09/02 Python
TensorFlow梯度求解tf.gradients实例
2020/02/04 Python
Numpy(Pandas)删除全为零的列的方法
2020/09/11 Python
基于python实现简单网页服务器代码实例
2020/09/14 Python
英国办公用品商店:Office Outlet
2018/04/04 全球购物
自我评价中英文语句
2013/11/30 职场文书
个人授权委托书
2014/04/03 职场文书
会议欢迎标语
2014/06/30 职场文书
人力资源职位说明书
2014/07/29 职场文书
2015年元旦促销方案书
2014/12/09 职场文书
平凡的世界读书笔记
2015/06/25 职场文书
行为习惯主题班会
2015/08/14 职场文书
PyTorch 如何设置随机数种子使结果可复现
2021/05/12 Python
python开发飞机大战游戏
2021/07/15 Python
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记
苹果的回收机器人可以通过拆解iPhone获取大量的金和铜并外公布了环境保护最新进展
2022/04/21 数码科技