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发邮件附件可以使用email模块实现)
Dec 03 Python
Python数组条件过滤filter函数使用示例
Jul 22 Python
python进行两个表格对比的方法
Jun 27 Python
使用Python AIML搭建聊天机器人的方法示例
Jul 09 Python
对numpy数据写入文件的方法讲解
Jul 09 Python
Pycharm保存不能自动同步到远程服务器的解决方法
Jun 27 Python
Python将视频或者动态图gif逐帧保存为图片的方法
Sep 10 Python
Python递归函数特点及原理解析
Mar 04 Python
selenium切换标签页解决get超时问题的完整代码
Aug 30 Python
Python入门之基础语法详解
May 11 Python
pandas中DataFrame重置索引的几种方法
May 24 Python
python机器学习Github已达8.9Kstars模型解释器LIME
Nov 23 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中通过ADO调用Access数据库的方法测试不通过
2006/12/31 PHP
说说PHP的autoLoad自动加载机制
2012/09/27 PHP
php牛逼的面试题分享
2013/01/18 PHP
php中strstr、strrchr、substr、stristr四个函数的区别总结
2014/09/22 PHP
简单实用的PHP防注入类实例
2014/12/05 PHP
WordPress开发中用于标题显示的相关函数使用解析
2016/01/07 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
2019/02/25 PHP
php生成word并下载代码实例
2019/03/15 PHP
jquery 查找iframe父级页面元素的实现代码
2011/08/28 Javascript
ASP.NET jQuery 实例6 (实现CheckBoxList成员全选或全取消)
2012/01/13 Javascript
select标签模拟/美化方法采用JS外挂式插件
2013/04/01 Javascript
7个JS基础知识总结
2014/03/05 Javascript
简单谈谈JavaScript的同步与异步
2015/12/31 Javascript
jQuery点击输入框显示验证码图片
2016/05/19 Javascript
深入分析javascript中的错误处理机制
2016/07/17 Javascript
canvas 弹幕效果(实例分享)
2017/01/11 Javascript
js仿微博动态栏功能
2017/02/22 Javascript
Node.js使用Koa搭建 基础项目
2018/01/08 Javascript
JS使用canvas中的measureText方法测量字体宽度示例
2019/02/02 Javascript
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
2019/08/23 Javascript
解决Layui数据表格显示无数据提示的问题
2019/11/14 Javascript
微信小程序实现下滑到底部自动翻页功能
2020/03/07 Javascript
JS Array.from()将伪数组转换成数组的方法示例
2020/03/23 Javascript
python操作MongoDB基础知识
2013/11/01 Python
PyQt 线程类 QThread使用详解
2017/07/16 Python
Python Web框架之Django框架Form组件用法详解
2019/08/16 Python
详细分析Python可变对象和不可变对象
2020/07/09 Python
10行Python代码实现Web自动化管控的示例代码
2020/08/14 Python
西雅图电动自行车公司:Rad Power Bikes
2020/02/02 全球购物
餐饮收银员岗位职责
2014/02/07 职场文书
工业设计毕业生自荐信
2014/04/13 职场文书
优质服务活动实施方案
2014/05/02 职场文书
促销活动总结模板
2014/07/01 职场文书
使用Navicat Premium工具将oracle数据库迁移到MySQL
2021/05/27 Oracle
python单元测试之pytest的使用
2021/06/07 Python
Nginx 配置 HTTPS的详细过程
2022/05/30 Servers