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中的变量和赋值运算符
Oct 12 Python
Python检测生僻字的实现方法
Oct 23 Python
Python2实现的LED大数字显示效果示例
Sep 04 Python
Python(Django)项目与Apache的管理交互的方法
May 16 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
Jan 22 Python
对Python实现累加函数的方法详解
Jan 23 Python
Django之编辑时根据条件跳转回原页面的方法
Aug 21 Python
Django-xadmin+rule对象级权限的实现方式
Mar 30 Python
python3通过udp实现组播数据的发送和接收操作
May 05 Python
Python3 搭建Qt5 环境的方法示例
Jul 16 Python
Pygame Event事件模块的详细示例
Nov 17 Python
Django框架中表单的用法
Jun 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
phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法
2014/05/07 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
Javascript调用XML制作连动下拉列表框
2006/06/25 Javascript
使用jquery hover事件实现表格的隔行换色功能示例
2013/09/03 Javascript
Js判断CSS文件加载完毕的具体实现
2014/01/17 Javascript
javascript实现动态统计图开发实例
2015/11/21 Javascript
JS hashMap实例详解
2016/05/26 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
jQuery实现的简单百分比进度条效果示例
2016/08/01 Javascript
json定义及jquery操作json的方法
2016/09/29 Javascript
React Router基础使用
2017/01/17 Javascript
Angular2 路由问题修复详解
2017/03/01 Javascript
Vue2 模板template的四种写法总结
2018/02/23 Javascript
JavaScript中的连续赋值问题实例分析
2019/07/12 Javascript
mock.js模拟前后台交互
2019/07/25 Javascript
js设计模式之代理模式及订阅发布模式实例详解
2019/08/15 Javascript
jQuery实现动态加载瀑布流
2020/09/01 jQuery
[56:13]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第一场 1月10日
2021/03/11 DOTA
以911新闻为例演示Python实现数据可视化的教程
2015/04/23 Python
python基础_文件操作实现全文或单行替换的方法
2017/09/04 Python
Python 查看文件的编码格式方法
2017/12/21 Python
使用requests库制作Python爬虫
2018/03/25 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
2019/06/26 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
2020/01/13 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
2020/02/27 Python
Python连接Mysql进行增删改查的示例代码
2020/08/03 Python
python定时截屏实现
2020/11/02 Python
马来西亚和新加坡巴士票在线预订:CatchThatBus
2018/11/17 全球购物
介绍一下Java的事务处理
2012/12/07 面试题
高中校园广播稿
2014/01/11 职场文书
《春晓》教学反思
2014/04/20 职场文书
社会调查研究计划书
2014/05/01 职场文书
党的群众路线教育实践活动剖析材料
2014/09/30 职场文书
地方白酒代理协议书
2014/10/25 职场文书
医院病假条怎么写
2015/08/17 职场文书
详解Django中 render() 函数的使用方法
2021/04/22 Python