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 相关文章推荐
Python3学习urllib的使用方法示例
Nov 29 Python
Python实现简单的语音识别系统
Dec 13 Python
Python反射的用法实例分析
Feb 11 Python
python3+PyQt5+Qt Designer实现扩展对话框
Apr 20 Python
python3.X 抓取火车票信息【修正版】
Jun 19 Python
详解Python发送email的三种方式
Oct 18 Python
python保存二维数组到txt文件中的方法
Nov 15 Python
python 计算积分图和haar特征的实例代码
Nov 20 Python
python 生成任意形状的凸包图代码
Apr 16 Python
python MD5加密的示例
Oct 19 Python
python实现启动一个外部程序,并且不阻塞当前进程
Dec 05 Python
Python urlopen()参数代码示例解析
Dec 10 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调用Twitter的RSS的实现代码
2010/03/10 PHP
php面向对象中static静态属性和静态方法的调用
2015/02/08 PHP
php检查页面是否被百度收录
2015/10/28 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
浅谈PHP中的Trait使用方法
2019/03/22 PHP
利用Keydown事件阻止用户输入实现代码
2014/03/11 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
2014/05/06 Javascript
js中回调函数的学习笔记
2014/07/31 Javascript
nodejs开发微博实例
2015/03/25 NodeJs
jQuery插件实现带圆点的焦点图片轮播切换
2016/01/18 Javascript
javascript基础知识
2016/06/07 Javascript
JS简单测试循环运行时间的方法
2016/09/04 Javascript
Javascript前端经典的面试题及答案
2017/03/14 Javascript
JavaScript创建对象的七种方式全面总结
2017/08/21 Javascript
vue实现select下拉显示隐藏功能
2019/09/30 Javascript
微信小程序实现上拉加载功能
2019/11/20 Javascript
vue实现表单未编辑或未保存离开弹窗提示功能
2020/04/08 Javascript
vue组件中传值EventBus的使用及注意事项说明
2020/11/16 Javascript
使用python编写批量卸载手机中安装的android应用脚本
2014/07/21 Python
python处理PHP数组文本文件实例
2014/09/18 Python
python sys.argv[]用法实例详解
2018/05/25 Python
Python中pandas dataframe删除一行或一列:drop函数详解
2018/07/03 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
Python实现通过解析域名获取ip地址的方法分析
2019/05/17 Python
python采集百度搜索结果带有特定URL的链接代码实例
2019/08/30 Python
python中Lambda表达式详解
2019/11/20 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
windows系统Tensorflow2.x简单安装记录(图文)
2021/01/18 Python
Python 转移文件至云对象存储的方法
2021/02/07 Python
CSS3系列教程:背景图片(背景大小和多背景图) 应用说明
2012/12/19 HTML / CSS
纯css3实现效果超级炫的checkbox复选框和radio单选框
2014/09/01 HTML / CSS
美国最大的珠宝商之一:Littman Jewelers
2016/11/13 全球购物
Right-on官方网站:日本知名的休闲服装品牌
2019/07/12 全球购物
学生上课说话检讨书
2014/10/25 职场文书
2014年社区个人工作总结
2014/12/02 职场文书
2015年社区科普工作总结
2015/05/13 职场文书