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】Python的urllib模块、urllib2模块批量进行网页下载文件
Nov 19 Python
深入理解 Python 中的多线程 新手必看
Nov 20 Python
Python使用re模块正则提取字符串中括号内的内容示例
Jun 01 Python
python中验证码连通域分割的方法详解
Jun 04 Python
Python爬虫实战之12306抢票开源
Jan 24 Python
详解Python3中ceil()函数用法
Feb 19 Python
Python实现使用request模块下载图片demo示例
May 24 Python
Django中自定义模型管理器(Manager)及方法
Sep 23 Python
如何解决django-celery启动后迅速关闭
Oct 16 Python
python做接口测试的必要性
Nov 20 Python
python groupby 函数 as_index详解
Dec 16 Python
python批量生成身份证号到Excel的两种方法实例
Jan 14 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
如何删除多级目录
2006/10/09 PHP
php文章内容分页并生成相应的htm静态页面代码
2010/06/07 PHP
PHP中foreach循环中使用引用要注意的地方
2011/01/02 PHP
php中根据变量的类型 选择echo或dump
2012/07/05 PHP
微信扫描二维码登录网站代码示例
2013/12/30 PHP
一些经常会用到的Javascript检测函数
2010/05/31 Javascript
一些常用且实用的原生JavaScript函数
2010/09/08 Javascript
基于JQuery制作的产品广告效果
2010/12/08 Javascript
原生js实现跨浏览器获取鼠标按键的值
2013/04/08 Javascript
在js文件中如何获取basePath处理js路径问题
2013/07/10 Javascript
深入理解Javascript作用域与变量提升
2013/12/09 Javascript
动态加载dtree.js树treeview(示例代码)
2013/12/17 Javascript
jQuery 实现侧边浮动导航菜单效果
2014/12/26 Javascript
鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解
2015/03/12 Javascript
jQuery插件Validate实现自定义校验结果样式
2016/01/18 Javascript
jQuery简单实现仿京东分类导航层效果
2016/06/07 Javascript
基于JS实现类似支付宝支付密码输入框
2016/09/02 Javascript
js+css3制作时钟特效
2016/10/16 Javascript
利用SpringMVC过滤器解决vue跨域请求的问题
2018/02/10 Javascript
使用sessionStorage解决vuex在页面刷新后数据被清除的问题
2018/04/13 Javascript
详解微信小程序中var、let、const用法与区别
2020/01/11 Javascript
用map函数来完成Python并行任务的简单示例
2015/04/02 Python
对python程序内存泄漏调试的记录
2018/06/11 Python
使用Python3内置文档高效学习以及官方中文文档
2019/05/19 Python
pytorch中nn.Conv1d的用法详解
2019/12/31 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
2020/02/21 Python
Django返回HTML文件的实现方法
2020/09/17 Python
大学生毕业求职简历的自我评价
2013/10/24 职场文书
五一服装活动方案
2014/01/11 职场文书
中秋节超市促销方案
2014/01/30 职场文书
设备动力科岗位职责范本
2014/02/23 职场文书
医院党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
护士长2014年度工作总结
2014/11/11 职场文书
外国人来华邀请函
2015/01/31 职场文书
2016大学自主招生推荐信范文
2015/03/23 职场文书
优秀志愿者感言
2015/08/01 职场文书