文章目录简介正则爬虫Demo本例知识点

简介

python的第三方包极多种,尽量多看多用,对开发者来说是很好的。在爬虫领域,请求网页,除了requests包之外,还有urllib.request模块;获取网页图片对应src的方法,除了BeautifulSoup之外,还有re模块的正则表达式。

正则表达式也是从html获取关键代码片段的方法,比较复杂,没有美丽汤模块那么好用;但是,了解一下还是必要的。本实例,还是从百度贴吧上爬取一个网页的多张图片,代码如下所述。

正则爬虫Demo

# -*- coding: utf-8 -*-

#网上案例:https://www..com/abelsu/p/4540711.html

#网上代码不能直接运行,需要修改

#导入所需第三方包。urllib.request用于请求网页,re用于正则表达式

import urllib.request

import re

#获取网页的html,与requests包一样的功能

def getHtml(url):

response = urllib.request.Request(url, headers = header)

page = urllib.request.urlopen(response)

html = page.read() #urllib用read()读取html;requests包用text读取html

print(html)

return html

#获取图片对应的src属性代码

def getImg(html):

html=html.decode('utf-8')

#通过re-compile-findall二连函数操作来获取图片src属性对应的代码

src = r'https://[^\s]*?\.jpg'

imgre = re.compile(src) #re.compile(),可以把正则表达式编译成一个正则表达式对象

imglist = re.findall(imgre, html)

#re.findall(),读取html中包含imgre(正则表达式)的数据,imglist是包含了所有src元素的数组

#用urlretrieve下载图片。图片命名为0/1/2...之类的名字

x = 0

for imgurl in imglist:

#注意,这里的文件路径,每段路径的首字母一定要大写!!小写会识别出错

urllib.request.urlretrieve(imgurl, 'E:\Python-study-project\Test_img\B\%s.jpg' % x)

x += 1

print(imgurl)

header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}

html = getHtml("https://tieba.baidu.com/p/5439602441")

getImg(html)

print('OK')

本例知识点

urllib.requests模块,用Requests、openurl来请求网页,用read()来读取出html,用urlretrieve来直接下载文件到制定目录;

re包中,用re-compile-findall来获取图片对应的src属性代码,这是一个常用的套路,类似于BeautifulSoup的soup-find_all-get三连击;

在正则表达式中,对于下面的长代码,直接用https://[^\s]*?.jpg来代替就可以了。具体每个字符的含义,可以自行查表,但是这个短代码串,是可以在很多爬虫中通用的。牢牢记住,再来变通。

https://imgsa.baidu.com/forum/w%3D580/sign=4c9a9f3955df8db1bc2e7c6c3921dddb/abf17d1ed21b0ef40b2f06ffd6c451da80cb3e7a.jpg

此外,还有一些小问题。例如,对于html此处还要用decode来解码(具体原因还不清楚),Python在文件路径上只能识别首字母为大写的文件。这些小问题,就需要开发者在实际中慢慢体会了;

提供了将下载的图片命名为1,2,3…等数字的方法,即:将变量x插入到下载和命名过程,每执行一次for函数,x就自加一次即可。

python爬虫正则表达式爬取网页标签_Python爬虫实例(4)-用urllib、re和正则表达式爬取网页图片...相关推荐

  1. 替换html标签内容正则表达式,正则表达式,替换所有HTML标签的简单实例

    我自己写了一个正则表达式, 这个是替换所以HTML标签,非贪婪的,多行的. 如果我想替换得到所以非HTML标签, 我的代码就只能是这样,先找打HTML标签,然后将标签替换掉. 能不能直接找到非HTML ...

  2. Python正则匹配HTML,python正则匹配html标签_Python爬虫常用正则表达式及HTML网页标签分析总结...

    这篇文章主要是介绍Python爬取网页信息时,经常使用的正则表达式及方法.它是一篇总结性文章,实用性比较大,主要解决自己遇到的爬虫问题,也希望对你有所帮助~ 当然如果会Selenium基于自动化测试爬 ...

  3. python正则匹配html标签_Python爬虫常用正则表达式及HTML网页标签分析总结

    这篇文章主要是介绍Python爬取网页信息时,经常使用的正则表达式及方法.它是一篇总结性文章,实用性比较大,主要解决自己遇到的爬虫问题,也希望对你有所帮助~ 当然如果会Selenium基于自动化测试爬 ...

  4. python解析网页数据_python爬虫——爬取网页数据和解析数据

    1.网络爬虫的基本概念 网络爬虫(又称网络蜘蛛,机器人),就是模拟客户端发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序. 只要浏览器能够做的事情,原则上,爬虫都能够做到. ...

  5. python爬取空气质量指标_python爬虫之静态网页——全国空气质量指数(AQI)爬取

    首先爬取地址:http://www.air-level.com/ 利用的python库,最近最流行的requests,BeautifulSoup. requests:用于下载html Beautifu ...

  6. python爬取音乐神器_Python爬虫提取神器,正则表达式(re模块),全程干货!

    python正则表达式(re模块) 什么是正则表达式 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a到z之间的字母)和特殊字符(称为"元字符&quo ...

  7. python 依据某几列累加求和_Python爬虫笔记:爬取单个页面

    前言 学习Python爬虫技术也是一件需要大量实践的事情,因为并不是所有的网站都对爬虫友好,更多的一种情况是网站为了限制爬虫不得不在最小化影响用户体验的前提下对网站访问做出一定的限制,最常见的就是一些 ...

  8. python爬取小说基本信息_Python爬虫零基础实例---爬取小说吧小说内容到本地

    Python爬虫实例--爬取百度贴吧小说 写在前面本篇文章是我在简书上写的第一篇技术文章,作为一个理科生,能把仅剩的一点文笔拿出来献丑已是不易,希望大家能在指教我的同时给予我一点点鼓励,谢谢. 一.介 ...

  9. python爬虫百度云资源分享吧_python爬虫入门 实战(七)---爬取并闪存微信群里的百度云资源...

    (声明:本篇文章以交流技术为目的,希望大家支持正版,支持院线~) 需求背景: 最近误入一个免费(daoban)资源的分享群(正经脸),群里每天都在刷资源链接.但是大家都知道,百度云的分享链接是很容易被 ...

最新文章

  1. 算法导论2-9章补充几道题
  2. cisco3550交换机配置手册
  3. java泛型机制的好处_java 泛型机制
  4. 微信小程序从零开始开发步骤(三)底部导航栏
  5. 游戏《蔚蓝山》教我的编程道理
  6. Unity 3D网络游戏实战 pdf
  7. 帕累托分布(Pareto distributions)、马太效应
  8. linux df -hl 数据解释,linux磁盘空间查看命令(du,df)剩余空间查看详解
  9. 国内外部分源软件镜像站和部分软件官方网站
  10. ssh登录极路由后台_使用小米路由3G,让普通打印机变成网络打印机
  11. MySQL数据库中如何查询分组后每组中的最后一条记录?
  12. 大数据模型交易平台案例:消费贷款客户营销分析解决方案
  13. Python BDD 框架之lettuce
  14. 弹幕网站开发(只有前端)
  15. 「得到」的竞品是谁?「王者荣耀」啊!
  16. 移动ISV大调查系列报告之四——MagicBox的游戏世界
  17. Linux 设置安排每天重启任务
  18. [ Azure | Az-900 ] 基础知识点总结(一) - Cloud云概念
  19. 思博伦Spirent TestCenter _使用iMIX功能配置混合帧长的流量模型 _双极未来
  20. 视锥体——初等几何解析

热门文章

  1. shell逻辑判断和-a区别
  2. github README.md使用
  3. 为什么你很努力,进步却很慢?
  4. C语言之最简单回调demo(五)
  5. iOS build faad
  6. Srs之HttpApi内部调用流程
  7. git之windows下创建.gitignore文件
  8. aix升级openssh_AIX6.1上源码编译升级openssh6.6p1
  9. python中sn的意思_python学习笔记
  10. 控制层远程调用业务层_如何应用数据访问服务层分离系统中的业务层和持久层之间耦合关系...