python库-urllib
urllib库提供了一系列操作url的功能,是python处理爬虫的入门级工具,网上的学习资料也很多。我做爬虫是一开始就用了Scrapy框架,并不是一步步从urllib开始的,反而是在后来解决一些小问题的时候用到了urllib库,感觉用起来很简洁也很实用,下面是我最近的一些应用总结。
1、urllib和urllib2
在python2.x的版本中有urllib和urllib2两个库,为什么这样我也没有好好去调研。两者能处理的问题有些相交,更多的是不同,在我的应用场景中,一个最重要的区别就是通过urllib2的方法可以修改header信息,而urllib不支持,后边的例子可以看到。
在python3的版本中,已经没有urllib2了,版本2中的urllib和urllib2合并在了一起,urllib自然也就支持修改头部信息
下面这两段代码是python2和python3的使用情况对比
import urllib2
req=urllib2.Request('https://www.python.org/')
req.add_header('Range','bytes=0-20')
res=urllib2.urlopen(req)
data=res.read().decode('utf-8')
print data
python3:
from urllib import request
req=request.Request("https://www.python.org/")
req.add_header('Range','bytes=0-20')
res=request.urlopen(req) res.read().decode('utf-8')
2、应用urllib爬取页面信息的完整小案例(python2)
我理解的整个爬虫的过程就是首先下载网页,然后对网页进行解析提取需要的数据,最后数据入库或者是文件等等。上面的代码已经将网页下载下来了,只不过由于修改了Range信息,所以只下载了网页的一部分。
下面的例子就是如何解析网页,我之前关于Scrapy的博客用到了Xpath的方式,下面这个例子是用的正则,其实解析网页就没有urllib什么事了...
豆瓣电影中排名前170名电影的得分之和:我用的urllib库,用urllib2也是可以的
import urllib
import re
ll=[]
for i in range(7):
url='http://movie.douban.com/top250?start'+str(i*25)
req=urllib.urlopen(url)
page=req.read()
reg='<span class="rating_num" property="v:average">([0-9]+.[0-9]+)</span>'
regc=re.compile(reg)
res=regc.findall(page)
ll.extend(res)
sum=0
for i in range(170):
sum+=float(ll[i])
print sum
3、应用urllib2发送get和post请求(python2)
get和post最简单的理解就是,get是把请求信息附加到url里,而post则是通过表单
(1)查看请求参数——看url,可以从网址栏看,也可以通过开发者工具看
或者从,参数列表看:
(2)get方式----把参数附加到url即可
import urllib2
url='http://www.douban.com/search?source=suggest&q=123'
req=urllib2.Request(url)
(3)post方式
import urllib
import urllib2
url="http://www.douban.com/search"
data={'source':'suggest','q':''}
data=urllib.urlencode(data) # 编码成url的格式
req=urllib2.Request(url=url,data=data)
4、爬虫真的很好玩~~
最后再说点有意思的,本人也是有喜欢的小明星哒,网上那么多的美图下也下不过来,肿么办呢?写个爬虫吧哈哈~前几天逛贴吧看美图突发奇想写个小爬虫,追星学习两不误呢~
import re
import urllib def getHtml(url):
page = urllib.urlopen(url)
html = page.read()
return html def getImg(html):
reg = r'src="(.+?\.jpg)" pic_ext'
imgre = re.compile(reg)
imglist = imgre.findall(html)
x = 0
for imgurl in imglist:
urllib.urlretrieve(imgurl,'%s.jpg' % x)
x = x + 1 html = getHtml("http://tieba.baidu.com/p/..........?pn=1") #改一下参数
getImg(html)
python库-urllib的更多相关文章
- python爬虫 - Urllib库及cookie的使用
http://blog.csdn.net/pipisorry/article/details/47905781 lz提示一点,python3中urllib包括了py2中的urllib+urllib2. ...
- Python爬虫Urllib库的高级用法
Python爬虫Urllib库的高级用法 设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Head ...
- Python爬虫Urllib库的基本使用
Python爬虫Urllib库的基本使用 深入理解urllib.urllib2及requests 请访问: http://www.mamicode.com/info-detail-1224080.h ...
- Python爬虫--Urllib库
Urllib库 Urllib是python内置的HTTP请求库,包括以下模块:urllib.request (请求模块).urllib.error( 异常处理模块).urllib.parse (url ...
- python之urllib库
urllib库 urllib库是Python中一个最基本的网络请求库.可以模拟浏览器的行为,向指定的服务器发送一个请求,并可以保存服务器返回的数据. urlopen函数: 在Python3的urlli ...
- python 之 Urllib库的基本使用
目录 python 之 Urllib库的基本使用 官方文档 什么是Urllib urlopen url参数的使用 data参数的使用 timeout参数的使用 响应 响应类型.状态码.响应头 requ ...
- Python使用urllib,urllib3,requests库+beautifulsoup爬取网页
Python使用urllib/urllib3/requests库+beautifulsoup爬取网页 urllib urllib3 requests 笔者在爬取时遇到的问题 1.结果不全 2.'抓取失 ...
- python中urllib, urllib2,urllib3, httplib,httplib2, request的区别
permike原文python中urllib, urllib2,urllib3, httplib,httplib2, request的区别 若只使用python3.X, 下面可以不看了, 记住有个ur ...
- python:利用urllib查找计算机二级准考证号
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAaYAAAEACAIAAAB3VkWnAAAgAElEQVR4nOydZ3gUR9bv+WhExhHnDH
随机推荐
- [洛谷P4248][AHOI2013]差异
题目大意:给一个长度为$n$的字符串,求: $$\sum\limits_{1\leqslant i<j\leqslant n}|suf_i|+|suf_j|-2\times lcp(suf_i, ...
- POJ3468:A Simple Problem with Integers——题解
http://poj.org/problem?id=3468 实现一个线段树,能够做到区间修改和区间查询和. 明显板子题. #include<cstdio> #include<cma ...
- BZOJ4200 & 洛谷2304 & UOJ132:[NOI2015]小园丁与老司机——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4200 https://www.luogu.org/problemnew/show/P2304 ht ...
- BZOJ2395:[Balkan 2011]Timeismoney——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=2395 有n个城市(编号从0..n-1),m条公路(双向的),从中选择n-1条边,使得任意的两个城市 ...
- 【简单算法】22.删除链表的倒数第N个节点
题目: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: ->->->->, 和 n = . 当删除了倒数第二个节点后,链表变为 -& ...
- 【极值问题】【CF1063B】 Labyrinth
传送门 Description 给你一个\(n~\times~m\)的矩阵,一开始你在第\(r\)行第\(c\)列.你的上下移动不受限制,向左最多移动\(x\)次,向右最多移动\(y\)次.求你最多能 ...
- HTML5 canvas 创意:飞翔的凤凰
当我看到这件作品的时候,我表示非常喜欢.这个作品的产生不仅仅需要编程和算法,作者肯定是个充满了艺术细胞的人.倘若有什么canvas艺术作品比赛的话,我想它就是获奖的那个. 先观赏下演示吧.注意,要看到 ...
- nginx基于域名的虚拟主机配置(本地分布式项目域名配置及测试方法)
最有用的虚拟主机配置方式. 一个域名只能绑定一个ip地址,一个ip地址可以被多个域名绑定. 可以修改host文件实现域名访问. 前提:即使我们在nginx中配置基于域名的虚拟主机,也需要域名解析,即n ...
- Codeforces Round #514 (Div. 2) C. Sequence Transformation(递归)
C. Sequence Transformation 题目链接:https://codeforces.com/contest/1059/problem/C 题意: 现在有1~n共n个数,然后执行下面操 ...
- TCP的连接(三次握手)和释放(四次挥手)
1 http都设置哪些header? http协议规定:一个完整的客户端发送给服务端的HTTP请求包括: (1)请求行:包括了请求方法.请求资源路径.HTTP协议版本,eg:GET/Server/im ...