正则表达式(续)

一、正则表达式的应用举例

1

#-*-coding:utf8-*-

#导入re库文件
import re

f = open('text.txt','r')     # text.txt文件与当前.py文件在同一路径下
html = f.read()
f.close()

#爬取网页标题
# 在确定只有一个内容时,使用search方法,可提高效率
title = re.search('<title>(.*?)</title>',html,re.S).group(1)
print title

输出:

极客学院爬虫测试


2

#-*-coding:utf8-*-

#导入re库文件
import re

f = open('text.txt','r')
html = f.read()
f.close()

#爬取链接
links = re.findall('href="(.*?)"',html,re.S)
for each in links:
    print each

输出:

http://jikexueyuan.com/welcome.html
http://jikexueyuan.com/1.html
http://jikexueyuan.com/2.html
http://jikexueyuan.com/3.html


3

#-*-coding:utf8-*-

#导入re库文件
import re

f = open('text.txt','r')
html = f.read()
f.close()

#抓取部分文字,先大再小技巧
text_fied = re.findall('<ul>(.*?)</ul>',html,re.S)[0]
the_text = re.findall('">(.*?)</a>',text_fied,re.S)
for every_text in the_text:
    print every_text

输出:

这是第一条
这是第二条
这是第三条


4

#-*-coding:utf8-*-

#导入re库文件
import re

old_url = 'http://www.jikexueyuan.com/course/android/?pageNum=2'
total_page = 5

#sub实现翻页
for i in range(2,total_page+1):   # 左闭右开
    new_link = re.sub('pageNum=\d+','pageNum=%d'%i,old_url,re.S)
    print new_link

输出:

http://www.jikexueyuan.com/course/android/?pageNum=2
http://www.jikexueyuan.com/course/android/?pageNum=3
http://www.jikexueyuan.com/course/android/?pageNum=4
http://www.jikexueyuan.com/course/android/?pageNum=5




二、实战——制作文本爬虫

1 目标网站:

http://blog.youkuaiyun.com/column.html


2 目标内容:

图片

3 实现原理:

3.1 保存网页源代码

目前,还没有涉及到使用Python程序获取网页源代码,但是可以手动获取,因此这种文本爬虫方式又称为半自动爬虫人肉爬虫

1' 右击网站页面,点击“查看源代码”跳出该网页源代码(view-source:http://blog.youkuaiyun.com/column.html);

2' 对于代码量大的源程序,可回到目标网站,右击页面,点击“审查元素”,再点击弹出窗口的左上角的放大镜图标,选择目标图片,则自动定位到相应代码位置;

3' 在目标图片标签内,给出了图片网址,以及class="column_logo"信息作为寻找标记;


4' 切换到源代码页面,搜索关键字class="column_logo",可查看到该网页的所有图片对应的网址及其他信息;


5' 本着先大后小的原则,不是复制全部源代码,只需复制涉及到相关信息的源代码,以文本文件格式保存在与.py文件同一路径下;


3.2 Python读文件加载源代码

3.3 正则表达式提取图片网址

3.4 下载图片

#-*-coding:utf8-*-

#导入re库文件
import re
import requests  # python获取网页文件的利器,这里用以保存图片

f = open('text.txt','r')
html = f.read()
f.close()

pic_url=re.findall('src="(.*?)" class="column_logo"',html,re.S)
i=0
for each in pic_url:
    print 'now downloading:'+each
    pic=requests.get(each)              # 下载图片
    fp=open('pic\\'+str(i)+'.jpg','wb') # 图片保存在pic文件夹下
    fp.write(pic.content)
    fp.close()
    i+=1












资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 “STC单片机电压测量”是一个以STC系列单片机为基础的电压检测应用案例,它涵盖了硬件电路设计、软件编程以及数据处理等核心知识点。STC单片机凭借其低功耗、高性价比和丰富的I/O接口,在电子工程领域得到了广泛应用。 STC是Specialized Technology Corporation的缩写,该公司的单片机基于8051内核,具备内部振荡器、高速运算能力、ISP(在系统编程)和IAP(在应用编程)功能,非常适合用于各种嵌入式控制系统。 在源代码方面,“浅雪”风格的代码通常简洁易懂,非常适合初学者学习。其中,“main.c”文件是程序的入口,包含了电压测量的核心逻辑;“STARTUP.A51”是启动代码,负责初始化单片机的硬件环境;“电压测量_uvopt.bak”和“电压测量_uvproj.bak”可能是Keil编译器的配置文件备份,用于设置编译选项和项目配置。 对于3S锂电池电压测量,3S锂电池由三节锂离子电池串联而成,标称电压为11.1V。测量时需要考虑电池的串联特性,通过分压电路将高电压转换为单片机可接受的范围,并实时监控,防止过充或过放,以确保电池的安全和寿命。 在电压测量电路设计中,“电压测量.lnp”文件可能包含电路布局信息,而“.hex”文件是编译后的机器码,用于烧录到单片机中。电路中通常会使用ADC(模拟数字转换器)将模拟电压信号转换为数字信号供单片机处理。 在软件编程方面,“StringData.h”文件可能包含程序中使用的字符串常量和数据结构定义。处理电压数据时,可能涉及浮点数运算,需要了解STC单片机对浮点数的支持情况,以及如何高效地存储和显示电压值。 用户界面方面,“电压测量.uvgui.kidd”可能是用户界面的配置文件,用于显示测量结果。在嵌入式系统中,用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值