Python爬虫学习
来源:互联网 发布:c语言进阶书籍 编辑:程序博客网 时间:2024/04/20 06:50
好长时间没有登录自己的这个博客,看了一下自己的文章还是去年的,发现自己这一年自己学的东西大部分都写在了自己的有道云里面,没有分享出来,大概也是因为自己最近这一年没有接触到什么新的东西。这次回来是想将自己最近因工作需要学习Python的历程记录下来。同时,也将自己经验介绍给后来人,少走弯路^_^ 今天,自己在家闲的无聊,写了个Python的爬虫小程序。先将这个分享出来,稍后我将分享Python的一些基础东西。 爬虫,在自己没有接触前一直以为是一个很牛逼高大上的技术活。其实,这个说的是聚焦爬虫,这里我就不讲了大家自行百度,这里百度一下不会die。对于通用爬虫,因为你只要给定URL,它关键技术只在正则表达式的研究上,因为你想爬别人的东西,别人稍稍把网页上的你想爬的东西结构一改你的爬虫就失灵了,所以你得跟着改你的正则规则,这样才能匹配上才能爬下别人的东西。 说了这么多,下面贴上Python爬虫的脚本:
1、获取页面
def getHtml(url): #创建一个表示远程url的类文件对象,然后像本地文件一样操作这个类文件对象来获取远程数据。 page = urllib.urlopen(url) #根据urlopen(),返回的对象获取页面信息 html = page.read() return html
获取指定网页源代码:
2、获取页面图片URL
def getImg(html): #图片的正则表达式 reg = r'src="(.+?\.jpg)" pic_ext' #Python提供的正则表达式匹配方法 imgre = re.compile(reg) imglist = re.findall(imgre,html) x = 0 for imgurl in imglist: # urllib.urlretrieve(imgurl,'%s.jpg' % x) #将文件下载到本地(根目录) save_file('%s.jpg' % x, imgurl) x+=1
3、将图片保存至指定文件目录
def save_file(filename, img_url): img = requests.get(img_url) name = str("D:\py-workspace\picture"+"/"+filename) with open(name, "wb") as file: file.write(img.content)
4、调用
html = getHtml("http://tieba.baidu.com/p/2460150866")getImg(html)
爬取的图片:
方法讲解:
1、urlopen()方法:
urllib.urlopen(url[, data[, proxies]]) :创建一个表示远程url的类文件对象,然后像本地文件一样操作这个类文件对象来获取远程数据。
参数url表示远程数据的路径,一般是网址;
参数data表示以post方式提交到url的数据;
参数proxies用于设置代理。
urlopen返回 一个类文件对象,它提供了如下方法:
read() , readline() , readlines() , fileno() , close() :这些方法的使用方式与文件对象完全一样;
info():返回一个httplib.HTTPMessage 对象,表示远程服务器返回的头信息
getcode():返回Http状态码。如果是http请求,200表示请求成功完成;404表示网址未找到;
geturl():返回请求的url。
2、urlretrieve()方法:(代码中我将这个方法直接注释掉了,这里我们直接再进一步保存到指定文件夹)
urllib.urlretrieve(url[, filename[, reporthook[, data]]])
参数说明:
url:外部或者本地url;
filename:指定了保存到本地的路径(如果未指定该参数,urllib会生成一个临时文件来保存数据);
reporthook:是一个回调函数,当连接上服务器、以及相应的数据块传输完毕的时候会触发该回调。我们可以利用这个回调函数来显示当前的下载进度。
data:指post到服务器的数据。该方法返回一个包含两个元素的元组(filename, headers),filename表示保存到本地的路径,header表示服务器的响应头。
3、open()方法:
open(file_name [, access_mode][, buffering])
各个参数的细节如下:
file_name:file_name变量是一个包含了你要访问的文件名称的字符串值;
access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r),这里我们用的是’wb’
buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
4、 write()方法
write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。
write()方法不会在字符串的结尾添加换行符(‘\n’)。
- 学习python爬虫
- python 爬虫学习一
- Python爬虫学习
- Python爬虫学习
- python爬虫学习
- Python学习--爬虫
- python学习爬虫
- Python 爬虫学习1
- Python 爬虫学习2
- python简单爬虫学习
- Python简单爬虫学习
- Python爬虫学习系列
- python + 机器学习 + 爬虫
- python 爬虫 学习
- python爬虫基础学习
- Python爬虫学习总结
- Python爬虫学习
- python beautifulsoup 爬虫学习
- Mysql The server quit without updating PID file 解决方法
- HDU_5167_Fibonacci
- 美丽的月亮拍摄问题
- 第3章 里氏替换原则(LSP)
- java小白笔记--XML
- Python爬虫学习
- android 小知识点
- Ubuntu Server 16.04.1 LTS 使用手记
- 【noip 2015】信息传递 dfs
- Unity 解决UI点击穿透问题
- 多选框jquery选择
- Scala:类,对象和特征(接口)
- 虚拟内存和物理内存的概念
- linux套接字概念