Python学习笔记(一)
来源:互联网 发布:福昕pdf编辑器 mac 编辑:程序博客网 时间:2024/06/03 19:43
文章始于:2017年9月30日
国庆期间,打算学习一些机器学习的算法,和工具(TensorFlow),学习当然要从基础学起了,而机器学习的基础就是Python咯,准备在这段学习期间做几期Python笔记,希望大家关注~~~
注:这次主要通过做一些实践项目、小功能来学习Python,对语法基础部分就不赘述啦~
编写Python使用的是PyCharm:一款口碑好、实用的Python IDE
第一次笔记讲述:Python爬虫,对指定网页的图片进行抓取、下载和保存
Python爬虫
(一)概述
使用到的工具:
urllib库:一款用于爬虫的库,它提供了一些方法,如建立网络连接、抓取HTML文件代码,它让整个爬虫过程简单了许多。
urllib推出了两个版本,urllib和urllib2:这两种版本是不可以相互替代的,所以常常两个库一起引用。import urllibimport urllib2
import“输入、进口”,用来应用各种API接口,库等。
(二)代码详解
先奉上完整版代码:
#coding:utf-8#编码声明为utf8import reimport urllibimport urllib2#---基本的网页抓取---#def GetHtmlCode(url): #抓取网页代码 request = urllib2.urlopen(url) html = request.read() return htmldef GetImg(html): reg = r'src="(.+?\.jpg)"' #正则表达式,表示图片地址 img = re.compile(reg) #将正则表达式编译为正则对象 imgList = re.findall(img, html) #读取包含img(正则表达式)的数据 x = 0 for imgi in imgList: #图片地址通过for循环遍历、保存到指定路径 print r'正在保存第',x+1,'张图片' #urllib.urlretrieve()方法,直接将远程数据下载到本地,图片通过x依次递增命名 urllib.urlretrieve(imgi, 'D:\pics\%s.jpg' %x) x += 1 return x #返回图片总数HTML = GetHtmlCode("http://desk.zol.com.cn/qiche/p4/")print GetImg(HTML)
这段代码,抓取的是ZOL汽车壁纸主页上的所有JPG图片,图片直接通过urllib.urlretrieve()
保存到D盘的‘pics’文件夹中。
— 详解 —
下面开始分析代码:
#coding:utf-8#编码声明为utf8
- 文件的编码声明——必须写在开头。代表着这段代码允许使用UTF8编码,一种中文编码,如果需要在文件里面加入中文字符串,包括注释等等,都要添加这段代码哦。so,作为一名中国程序员,
#coding:utf-8
应该是必不可少的了。
import reimport urllibimport urllib2
- 引用库(模块)re、urllib、urllib2,re是正则表达式模块,在提取图片时使用到了这个库。
#---基本的网页抓取---#def GetHtmlCode(url): #抓取网页代码 request = urllib2.urlopen(url) html = request.read() return html
代码功能,在注释中已经明确:基本的网页抓取,无任何复杂操作。
输入参数:
url
参数 url 表示远程数据的路径,一般是 http 或者 ftp 路径。例如:“http://www.baidu.com”- 返回值:
html
它被定义在方法中,是被抓取网页的整串HTML代码。 - 作为Python,并没有{ 、} 、;作为结束终止符,一切都有格式代替了,所以Python对格式的要求也是显而易见了,这无疑增强了Python的可阅读性和美观性。
Python中,函数被定义后:
def GetHtmlCode(url):
,‘:’表示进入这段函数代码。函数内的每一行代码,与定义语句始终保持一个跳格符的位置关系,这个规则贯穿整个Python,其实就是跳格符代替了其他语言的结束终止符。方法
GetHtmlCode(url)
详解:request = urllib2.urlopen(url)
使用urllib2库中的方法urlopen(url)
这个方法的作用是:访问URL路径,返回一个类文件对象,赋值给request
。html = request.read()
request类文件对象提供了方法read()
,读取对象中的数据,转为字符串形式输出给html
,即整段网页的HTML代码。- 值得注意的是,Python的变量是不需要进行类型说明的,它由方法返回值的类型直接决定。
def GetImg(html): reg = r'src="(.+?\.jpg)"' #正则表达式,表示图片地址 img = re.compile(reg) #将正则表达式编译为正则对象 imgList = re.findall(img, html) #读取包含img(正则表达式)的数据 x = 0 for imgi in imgList: #图片地址通过for循环遍历、保存到指定路径 print r'正在保存第',x+1,'张图片' #urllib.urlretrieve()方法,直接将远程数据下载到本地,图片通过x依次递增命名 urllib.urlretrieve(imgi, 'D:\pics\%s.jpg' %x) x += 1 return x #返回图片总数
代码功能:提取html里符合规则的图片。
方法
GetImg(html)
详解:- 一些语句的含义已在注释里注明,这里不再重复,下面主要对语法进行讲解
r'src="(.+?\.jpg)"'
这是一种Python字符串的表达形式,带r前缀的字符串,不需要转义符,如果需要换行,直接在字符串书写时,进行换行即可。- Python的for循环:
for[空格]临时变量[空格]in[循环对象]:
或for[空格]临时变量[空格]in[空格]range([起始值], [终了值], [步数step]):
,Python语法中,默认的初始值为0,步数为1,所以简单的0-100遍历可以简写为for i in range(100)
- Python的打印输出十分简洁:
print [字符串1],[字符串2]
就可以实现两个字符串的拼接输出。
HTML = GetHtmlCode("http://desk.zol.com.cn/qiche/p4/")print GetImg(HTML)
最后,就是实现代码了,只有两行,首先输入路径url得到读取后的代码字符串HTML:HTML = GetHtmlCode("http://desk.zol.com.cn/qiche/p4/")
,然后提取图片,最后输出图片总数print GetImg(HTML)
这样,简单的Python图片爬取就完成了,贴上输出结果:
以及保存到的图片:
谢谢大家,欢迎大家继续关注我的Python学习笔记!
- python学习笔记(一)
- Python学习笔记(一)
- python学习笔记(一)
- python学习笔记(一)
- python学习笔记(一)
- python学习笔记(一)
- Python学习笔记(一)
- Python学习笔记(一)
- python学习笔记(一)
- Python学习笔记(一)
- python学习笔记(一)
- Python学习笔记(一)
- python学习笔记:(一)
- Python学习笔记(一)
- python学习笔记(一)
- python学习笔记(一)
- python学习笔记(一)
- python学习笔记(一)
- redis事务与watch
- 在vcenter中给linux虚拟机添加网卡,但找不到的问题。
- 收藏一个POI生成级联菜单选择的例子,选择省市县场景
- 使用Spring配置多数据源
- Qt无边框模态窗口QDialog在点其它窗口时实现闪烁效果
- Python学习笔记(一)
- 查找新插入的一条数据在表中的位置及扩展
- kali linux安装中文输入法
- Swift超级简单基础总结
- 《Java编程思想》——并发读书笔记
- postgresql创建序列查询序列
- 我是一个码小白啊,编程对我充满了诱惑,我对编程充满了好奇,今天是一个崭新的开始,加油
- JavaScript 的数据类型
- 阿里iconfont图标使用