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中使用HTMLParser解析HTML的教程
Apr 29 Python
基于Python的接口测试框架实例
Nov 04 Python
基于Python3.6+splinter实现自动抢火车票
Sep 25 Python
用Django写天气预报查询网站
Oct 21 Python
Python 利用scrapy爬虫通过短短50行代码下载整站短视频
Oct 29 Python
Python 3.6 -win64环境安装PIL模块的教程
Jun 20 Python
python中PS 图像调整算法原理之亮度调整
Jun 28 Python
python读取csv文件指定行的2种方法详解
Feb 13 Python
Python semaphore evevt生产者消费者模型原理解析
Mar 18 Python
Python %r和%s区别代码实例解析
Apr 03 Python
Python根据字典的值查询出对应的键的方法
Sep 30 Python
python全栈开发语法总结
Nov 22 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 中执行系统外部命令
2006/10/09 PHP
iis下php mail函数的sendmail配置方法(官方推荐)
2012/04/25 PHP
PHP自定义函数实现格式化秒的方法
2016/09/14 PHP
javascript英文日期(有时间)选择器
2007/05/02 Javascript
浏览器无法运行JAVA脚本的解决方法
2008/01/09 Javascript
如何将php数组或者对象传递给javascript
2014/03/20 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
2015/03/04 Javascript
JavaScript实现将xml转换成html table表格的方法
2015/04/17 Javascript
jQuery模拟原生态App上拉刷新下拉加载更多页面及原理
2015/08/10 Javascript
javascript原生ajax写法分享
2016/04/10 Javascript
JavaScript toUpperCase()方法使用详解
2016/08/26 Javascript
JavaScript解析JSON格式数据的方法示例
2017/01/24 Javascript
ES6学习教程之对象的扩展详解
2017/05/02 Javascript
jquery中有哪些api jQuery主要API
2017/11/20 jQuery
JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】
2018/05/14 Javascript
详解如何使用babel进行es6文件的编译
2018/05/29 Javascript
js html实现计算器功能
2018/11/13 Javascript
移动端自适应flexible.js的使用方法(不用三大框架,仅写一个单html页面使用)推荐
2019/04/02 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
2019/04/17 Javascript
linux系统使用python获取cpu信息脚本分享
2014/01/15 Python
Python selenium实现微博自动登录的示例代码
2018/05/16 Python
Python 实现数组相减示例
2019/12/27 Python
django实现更改数据库某个字段以及字段段内数据
2020/03/31 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
2020/06/02 Python
Petmate品牌官方网站:宠物用品
2018/11/25 全球购物
爱尔兰橄榄球店:Irish Rugby Store
2019/12/05 全球购物
实习自我鉴定范文
2013/10/30 职场文书
好家长事迹材料
2014/01/23 职场文书
幼儿园安全检查制度
2014/01/30 职场文书
大学生先进事迹材料
2014/02/16 职场文书
少儿节目主持串词
2014/04/02 职场文书
2015年八一建军节演讲稿
2015/03/19 职场文书
2015年保育员个人工作总结
2015/05/13 职场文书
毕业论文答辩演讲稿
2015/06/23 职场文书
员工保密协议范本,您一定得收藏!很有用!
2019/08/08 职场文书
CSS3 制作的悬停缩放特效
2021/04/13 HTML / CSS