Python爬虫-urllib库
来源:互联网 发布:论文查重软件 编辑:程序博客网 时间:2024/06/05 00:33
通过构建一个request请求发送,然后获取回应response,也就是网页代码
import urllib2request = urllib2.Request("www.baidu.com")response = urllib2.urlopen(request)pageCode = response.read().decode('gbk')
数据传送分为两种方式:GET和POST
GET:直接以链接的方式访问,链接中包含了所有参数,如果包含密码的话,是一种不安全的选择,不适合传送大量数据
POST:POST则不会在链接上显示你提交了什么,可以传说大量数据、、
GET:
import urllibimport urllib2 values={}values['username'] = "1016903103@qq.com"values['password']="XXXX"data = urllib.urlencode(values) url = "http://passport.csdn.net/account/login"geturl = url + "?"+datarequest = urllib2.Request(geturl)response = urllib2.urlopen(request)print response.read()
POST:
import urllibimport urllib2 values = {}values['username'] = "1016903103@qq.com"values['password'] = "XXXX"data = urllib.urlencode(values) url = "http://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn"request = urllib2.Request(url,data)response = urllib2.urlopen(request)print response.read()
urlopen函数还可以设置超时时间,解决网站反应过慢的问题:
import urllib2response = urllib2.urlopen('http://www.baidu.com', timeout=10)
是否开启Debug Log
import urllib2httpHandler = urllib2.HTTPHandler(debuglevel=1)httpsHandler = urllib2.HTTPSHandler(debuglevel=1)opener = urllib2.build_opener(httpHandler, httpsHandler)urllib2.install_opener(opener)response = urllib2.urlopen('http://www.baidu.com')
有些网站不允许程序直接访问,它会通过一些检测来判断是否进行响应。其中十分基本的就是检验headers,因此我们需要设置headers来完全模拟浏览器。
agent是请求的身份,如果没有不设置的话,服务器不一定会响应。
import urllib2 url = 'http://www.server.com/login'user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' values = {'username' : 'cqc', 'password' : 'XXXX' } headers = { 'User-Agent' : user_agent } data = urllib.urlencode(values) request = urllib2.Request(url, data, headers) response = urllib2.urlopen(request) page = response.read()
为了对付盗链,很多服务器会识别headers中的refer字段是不是自己,如果不是,那么就不响应,所以我们也需要设置该字段。
headers = { 'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' , 'Referer':'http://www.zhihu.com/articles' }
有些网站会通过统计访问者的ip,如果某IP短时间内访问太多,则会禁止该ip访问一段时间。这个时候可以使用ip代理,每隔一段时间换一个代理,这样就可以绕过该限制。
enable_proxy = Trueproxy_handler = urllib2.ProxyHandler({"http" : 'http://some-proxy.com:8080'})null_proxy_handler = urllib2.ProxyHandler({})if enable_proxy: opener = urllib2.build_opener(proxy_handler)else: opener = urllib2.build_opener(null_proxy_handler)urllib2.install_opener(opener)
headers的具体格式:
User-Agent : 有些服务器或 Proxy 会通过该值来判断是否是浏览器发出的请求
Content-Type : 在使用 REST 接口时,服务器会检查该值,用来确定 HTTP Body 中的内容该怎样解析。
application/xml : 在 XML RPC,如 RESTful/SOAP 调用时使用
application/json : 在 JSON RPC 调用时使用
application/x-www-form-urlencoded : 浏览器提交 Web 表单时使用
在使用服务器提供的 RESTful 或 SOAP 服务时, Content-Type 设置错误会导致服务器拒绝服务
阅读全文
0 0
- Python爬虫-urllib库
- Python爬虫---urllib库介绍
- python爬虫-urllib库学习
- python爬虫urllib库学习(源码)
- python爬虫--urllib
- [爬虫] Python爬虫 urllib BeautifulSoup
- 【Python】基于python的urllib库编写网络爬虫
- python爬虫urllib使用B
- Python爬虫urllib笔记(一)
- Python爬虫之urllib介绍
- python爬虫(urllib简介)
- Python使用urllib库和BeautifulSoup库爬虫总结
- python学习:urllib库学习:制作简易爬虫下载图片
- python爬虫 - Urllib库及cookie的使用
- Python爬虫入门三之Urllib库的基本使用
- Python爬虫入门四之Urllib库的高级用法
- Python爬虫入门(3):Urllib库的基本使用
- Python爬虫入门(4):Urllib库的高级用法
- bootstrap中的样式分类
- Node.js 写入文件流的缓存问题探讨
- git 积累
- NoSQL中的memcached
- Java_基础—File类的概述和构造方法
- Python爬虫-urllib库
- destoon新手二次开发标签调用
- spring丶@produces注解-作用解答
- Java新手-抽象方法与权限修饰符
- Hbase shell 的使用
- 23种设计模式(12):策略模式
- 平均数
- 数据持久化之Json
- SQL Server 之 事务与隔离级别实例讲解