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中引用与复制用法实例分析
Jun 04 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
Feb 22 Python
python中不能连接超时的问题及解决方法
Jun 10 Python
解决nohup执行python程序log文件写入不及时的问题
Jan 14 Python
解决python测试opencv时imread导致的错误问题
Jan 26 Python
使用python爬取抖音视频列表信息
Jul 15 Python
Python实现朴素贝叶斯的学习与分类过程解析
Aug 24 Python
django中上传图片分页三级联动效果的实现代码
Aug 30 Python
Python装饰器实现方法及应用场景详解
Mar 26 Python
Python安装并操作redis实现流程详解
Oct 13 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
Oct 22 Python
Python max函数中key的用法及原理解析
Jun 26 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
Access数据库导入Mysql的方法之一
2006/10/09 PHP
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
php打乱数组二维数组多维数组的简单实例
2016/06/17 PHP
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
15款优秀的jQuery导航菜单插件分享
2011/07/19 Javascript
jQuery UI Autocomplete 体验分享
2012/02/14 Javascript
将input file的选择的文件清空的两种解决方案
2013/10/21 Javascript
使用js实现的简单拖拽效果
2015/03/18 Javascript
jQuery $.each遍历对象、数组用法实例
2015/04/16 Javascript
javascript十六进制及二进制转化的方法
2015/05/06 Javascript
jquery.form.js异步提交表单详解
2017/04/25 jQuery
使用javascript做在线算法编程
2018/05/25 Javascript
JS实现点击拉拽轮播图pc端移动端适配
2018/09/05 Javascript
详解NodeJS Https HSM双向认证实现
2019/03/12 NodeJs
vue项目移动端实现ip输入框问题
2019/03/19 Javascript
详解Python中 __get__和__getattr__和__getattribute__的区别
2016/06/16 Python
python 限制函数调用次数的实例讲解
2018/04/21 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
2019/08/12 Python
查看Python依赖包及其版本号信息的方法
2019/08/13 Python
Python django搭建layui提交表单,表格,图标的实例
2019/11/18 Python
简单了解python filter、map、reduce的区别
2020/01/14 Python
python 如何在测试中使用 Mock
2021/03/01 Python
浅析CSS3 中的 transition,transform,translate之间区别和作用
2020/03/26 HTML / CSS
使用HTML5的Canvas绘制曲线的简单方法
2015/09/08 HTML / CSS
澳大利亚旅游网站:Lastminute
2017/08/07 全球购物
英国最大的美妆产品在线零售商之一:Beauty Bay
2017/09/29 全球购物
意大利简约的休闲品牌:Aspesi
2018/02/08 全球购物
什么是smarty? Smarty的优点是什么?
2013/08/11 面试题
专业技术职务聘任书
2014/03/29 职场文书
中学生运动会通讯稿大全
2014/09/18 职场文书
招标授权委托书样本
2014/09/23 职场文书
2015年药店店长工作总结
2015/04/29 职场文书
复兴之路观后感
2015/06/02 职场文书
财务年终工作总结大全
2019/06/20 职场文书
pytorch中的model=model.to(device)使用说明
2021/05/24 Python
Go 通过结构struct实现接口interface的问题
2021/10/05 Golang