Hello,好久没更新了,因为我苦逼的去准备期中考试了,哎,不提了,进入我们今天的正题,提取网页中的信息吧。

上次,我们学会了如何向网站提交一个请求并得到返回的信息。

那么我们如何在这一大串信息中提取出我们想要的信息呢?

来看下面这个网站:

咳咳,这是一个例子,大家不要在意内容是什么,我这也是为了调起大家的学习兴趣对不对~

我们如果想提取这个网页中的照片,我们就要去观察他的源代码,也是我们上次文章中一次reques请求后返回的实例中的text的内容。

如下:

我们利用F12,可以看到整个HTML页面的详细情况,如果你是IE浏览器,当你的鼠标进入相应的键值对中的时候,我们打开的网页的相应位置会变成不同的颜色,这也是为了方便我们去找到这个元素在页面中的位置。如果你是谷歌浏览器的话,更加简单了

看到这个箭头了么,它会指向你点击的页面上的东西在html代码中的相应位置。

下面我们看,我们所看到的照片在元素界面中其实是以URL的形式存在的,所以如果我们想提取出这个照片,我们需要提取出这个照片的URL,然后访问这个url,然后下载下来即可。

那么我们的流程就是这样的:

请求HTML页面内容(利用我们上次的request库) -> 提取照片的URL -> 下载照片

那么我们现在的核心问题就是如何提取出这个照片的URL,今天我们介绍的方式叫做正则表达式。

首先,什么是正则表达式?

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

简单来说,就是我们利用一个公式表现出一个我们目的字符串的特点从而查找出这个目的字符串的方式。

我们仔细观察所有照片的url,我们发现他们有一个共同的特点,就是他们都是 scr=“balabala....jpg”对不对,我们可不可以利用他们的这个特点来将他们提取出来?

帮助我们完成这个工作的就是正则表达式。

那么既然知道怎么提取了,我们就开始我们的工作吧。

首先,我们请求一个HTML页面

这个函数的作用就是利用他的输入参数url,访问这个url对应的HTML页面,并且返回这个页面的内容(字符串)

我们这里利用了try-except方法来进行异常状态的捕捉,r.raise_for_status()这句代码会提交代码运行过程中遇到的错误,如果有错误会进入到except的函数体中,输出错误语句。

然后我们提取照片的url

解释参数:plt(picture——list) 我们最终的照片的url的一个数组,函数作用就是讲html页面中的对应的url存储在这个数组之中。

html,我们上一个函数请求下来的html页面的内容,是一个字符串

函数首先利用re库,也就是python的标准正则表达式库中的函数,findall,找出全部符合我们第一个参数代表的正则表达式形式的在第二个字符串参数中的所有字符串。

我们构造的正则表达式的含义:

.代表一个字符

*代表前一个字符重复0或无数次

?代表匹配最小长度

所以我们构造的“scr=“.*?jpg””的含义显而易见,就是为了匹配HTML中的url的正则表达式。

然后我们为它加上https的前缀。放入我们的数组中。

最后,我们将我们的数组中存好的url都下载下来就好:

root,我们下载文件夹的根目录位置

plt我们的照片的url数组

我们首先根据url的值为我们的图片命名,然后图片我们按照二进制文件的方式写入即可

这里我给出完整的代码,大家可以通过修改根目录的值和url的值,下载不同的照片。

import requests
import  redef getHTML(url):try:r = requests.get(url)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:print("gethtmel error")def getplt(plt , html):try:tplt = re.findall(r'src=".*?jpg"', html)for i in range(len(tplt)):url = eval(tplt[i].split('=')[1])url = "https:"+url#  print(url)plt.append(url)except:print("error")def writepic(root,plt):try:for i in range(len(plt)):path = root+plt[i].split('/')[-1]r = requests.get(plt[i])with open(path,'wb') as f:f.write(r.content)except:print("文件写入失败")if __name__ == '__main__':init_url = "https://www.plmm.com.cn/xinggan/index"deep = 10plt = []for i in range(10,80):if i>1 :t = init_url+"_"+str(i)+".html"else :t = init_url+".html"# print(t)html = getHTML(t)getplt(plt,html)writepic("D://PICS//",plt)

hsweb提取页面查询参数_爬虫入门二-提取信息-正则表达式相关推荐

  1. hsweb提取页面查询参数_提取网页,登录情况填写规则,参数和值获取办法

    提取网页,登录情况填写规则,参数和值获取办法 (2013-12-06 21:11:52) 标签: 校园 点击采集选项卡左下角增加,弹出采集网站规则页面 如果以前添加过网站规则,且现在要增加的网站正好与 ...

  2. hsweb提取页面查询参数_zabbix-基础系列(七)-zabbix用户参数

    Zabbix 用户参数 1.介绍和用法 1.介绍 自定义用户参数,也就是自定义key,有时可能想要运行一个代理检查,而不是 Zabbix 的预定义,就可以编写一个命令来检索需要的数据,并将其包含在代理 ...

  3. 转 Python爬虫入门二之爬虫基础了解

    静觅 » Python爬虫入门二之爬虫基础了解 2.浏览网页的过程 在用户浏览网页的过程中,我们可能会看到许多好看的图片,比如 http://image.baidu.com/ ,我们会看到几张的图片以 ...

  4. 爬虫模拟登陆手机验证码_爬虫入门到精通-headers的详细讲解(模拟登录知乎)...

    本文章属于爬虫入门到精通系统教程第七讲 直接开始案例吧. 本次我们实现如何模拟登陆知乎. 1.抓包 1. 首先打开知乎登录页 知乎 - 与世界分享你的知识.经验和见解 注意打开开发者工具后点击&quo ...

  5. python爬图片代码大全_爬虫入门教程⑩— 用漂亮的图表展示爬取到的数据

    经过了前面的努力,我们成功获取到了数据,并且学会了保存,但是只是用网页展示出来,是不是有一些不够美观呢? 所以本节的内容是:数据的可视化.拿到了数据却不能使其简单易懂并且足够突出,那就是不是好的数据工 ...

  6. 爬虫的步骤解析内容xpath介绍_爬虫入门到精通-网页的解析(xpath)

    在爬虫入门到精通第五讲中,我们了解了如何用正则表达式去抓取我们想要的内容.这一章我们来学习如何更加简单的来获取我们想要的内容. xpath的解释 XPath即为XML路径语言(XML Path Lan ...

  7. easyui datalist 不显示数据_爬虫练习——豆瓣电影信息爬取及数据可视化

    最近自学了简单的爬虫项目,简单记录下自己的小白学习路径. 本次爬取的是豆瓣电影TOP250数据,主要用到beautifulsoup.re.urllib库.SQLite包,数据可视化方面主要用到flas ...

  8. Python 爬虫入门(二)——爬取妹子图

    Python 爬虫入门 听说你写代码没动力?本文就给你动力,爬取妹子图.如果这也没动力那就没救了. GitHub 地址: https://github.com/injetlee/Python/blob ...

  9. python爬虫妹子图_Python 爬虫入门(二)——爬取妹子图

    Python 爬虫入门 听说你写代码没动力?本文就给你动力,爬取妹子图.如果这也没动力那就没救了. 公众号:[智能制造社区].欢迎关注,分享智能制造与编程那些事. 爬虫成果 当你运行代码后,文件夹就会 ...

最新文章

  1. 如何根据SRA accession number 从NCBI下载数据
  2. C++用FindFirstFile、FindNext递归遍历硬盘的文件
  3. OC-NSArray
  4. win7,ubuntu双系统——重装win7后如何恢复ubuntu引导
  5. maven和docker_Java EE,Docker和Maven(技术提示#89)
  6. 算法工程师笔试 -剑指offer-习题详细解答
  7. html伸缩布局,CSS3 伸缩布局(一)
  8. c++ 0x8000ffff灾难性故障_电容器毁灭性故障,让PCB板直接报废!
  9. 印象笔记等App被点名:违法收集公民个人信息
  10. “Emgu.CV.CvInvoke”的类型初始值设定项引发异常 解决办法
  11. 部门开始做技术talk
  12. android studio gradle下载失败处理
  13. 王源就抽烟致歉 | 大数据分析禁烟对烟草行业的影响有多大
  14. SAP CO生产订单的标准成本、计划成本、实际成本和目标成本
  15. 动态规划 - 切钢条 (python)
  16. Vue3悬浮返回主页按钮设计与实现
  17. 计算机pc at代表什么意思啊,PC/XT 与PC/AT的分别?
  18. 使用键鼠网络共享用windows控制ubuntu,实现跨屏跨系统操作
  19. 2019太原理工大学计算机录取分数线,2019年太原理工大学艺术类专业录取分数线...
  20. vue 播报警报声_启发了一个简单的Vue 2警报组件SweetAlert

热门文章

  1. 了解一下JAVA中的NIO模块
  2. 【转发】未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。...
  3. 使用threading模块实现多线程
  4. JSP基础(一)JSP介绍,文件结构及执行过程
  5. Ubuntu下部署zabbix 开源监控系统
  6. day5 ---- 数据类型及常用方法(字符串、列表)
  7. pandas—总结(2) 数据读写 (更新中)
  8. Android学习——SharedPreferences
  9. magento开发中文手册
  10. 《CSS基础教程》 读书笔记三