pycurl参考文档:http://pycurl.io/docs/latest/index.html   是英文文档,看起来也不是特么吃力跟着做问题不大。

#coding=utf-8

import pycurl
import StringIO """
简单原则:不要对str使用encode,不要对unicode使用decode ( s是code_A的str s.decode(‘code_A‘).encode(‘code_B‘) 0
""" class PySpider(): def __init__(self):
self.c = pycurl.Curl()
self.c.setopt(pycurl.COOKIEFILE, "cookie_file_name")#把cookie保存在该文件中
self.c.setopt(pycurl.COOKIEJAR, "cookie_file_name")
#设置跳转
self.c.setopt(pycurl.FOLLOWLOCATION, 1) #遇到302时候是否进行自动跳转
self.c.setopt(pycurl.MAXREDIRS, 5) #网页最多跳转的次数 #设置超时
self.c.setopt(pycurl.CONNECTTIMEOUT,60) #设置链接超时
self.c.setopt(pycurl.TIMEOUT,120) #设置下载超时 #设置代理 如果有需要请去掉注释,并设置合适的参数
#c.setopt(pycurl.PROXY, 'http://11.11.11.11:8080')
#c.setopt(pycurl.PROXYUSERPWD, '’'aaa:aaa') #-----------------------------------get函数-----------------------------------#
def GetData(self, url):
headers = ['Accept:*/*',
'User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0']
buf = StringIO.StringIO() self.c.setopt(self.c.WRITEFUNCTION, buf.write)
self.c.setopt(pycurl.URL, url)
self.c.setopt(self.c.HTTPHEADER, headers)
self.c.perform()
the_page =buf.getvalue()
charset = re.findall("""charset=([a-zA-Z0-9_\S][^"^>^']*)""",the_page)
buf.close()
return the_page,charset def PostData(self, url, data): headers = ['User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0']
#写入html
buf = StringIO.StringIO()
self.c.setopt(self.c.WRITEFUNCTION, buf.write) #设置POST传入数据#是否是post方法,默认是get#post的数据,是字典:个字典:{"key":"value"}
self.c.setopt(pycurl.POST,1)
self.c.setopt(pycurl.POSTFIELDS, data) #访问的url
self.c.setopt(pycurl.URL, url) # 传入Headers
self.c.setopt(pycurl.HEADER, True)
self.c.setopt(self.c.HTTPHEADER, headers)
self.c.perform()
charset = re.findall('charset=([a-zA-Z0-9_\S][^"^>]*)',the_page)
the_page = buf.getvalue()
buf.close()
return the_page,charset

稍微封装了一下,就变成上面这玩意了保存上面代码到Spider.py文件中,用法如下:

from Spider import PySpider
import json spider = PySpider() #GET方法
html = spider.GetData('http://www.baidu.com')
print html,charset #post方法
postdate = json.dumps({
 'cityListName':'gz',
'trade':'',
})
html = spider.PostData('http://qy.m.58.com/m_entlist/ajax_listinfo/2')
print html

  

爬虫:pycurl模块的使用说明的更多相关文章

  1. Python 的PyCurl模块使用

    PycURl是一个C语言写的libcurl的python绑定库.libcurl 是一个自由的,并且容易使用的用在客户端的 URL 传输库.它的功能很强大,PycURL 是一个非常快速(参考多并发操作) ...

  2. http服务需要pycurl模块这样去监控服务

    最近运维还是比较空闲,写篇自己的心得体会.做过运维的应该都做过http服务了.像一些电子商城,或者是一些互联网公司,web的服务之类是至关重要的,近期看了刘天斯大哥的书觉得自己运维平台应该也可以这样去 ...

  3. python关于SSL的认证--pycurl模块使用

    今天在做微信支付退款接口的时候,因为需要使用到双向证书的认证,所以一开始是没有头绪的,后来在网上找到了相类似的教程,发现了pycurl模块,才成功实现了证书认证,教程链接:http://blog.cs ...

  4. python爬虫 urllib模块url编码处理

    案例:爬取使用搜狗根据指定词条搜索到的页面数据(例如爬取词条为‘周杰伦'的页面数据) import urllib.request # 1.指定url url = 'https://www.sogou. ...

  5. python 爬虫 urllib模块 目录

    python 爬虫 urllib模块介绍 python 爬虫 urllib模块 url编码处理 python 爬虫 urllib模块 反爬虫机制UA python 爬虫 urllib模块 发起post ...

  6. python pycurl模块

    一.pycurl概述 PycURl是一个C语言写的libcurl的python绑定库.libcurl 是一个自由的,并且容易使用的用在客户端的 URL 传输库.它的功能很强大,在PyCURL的主页上介 ...

  7. python爬虫-urllib模块

    urllib 模块是一个高级的 web 交流库,其核心功能就是模仿web浏览器等客户端,去请求相应的资源,并返回一个类文件对象.urllib 支持各种 web 协议,例如:HTTP.FTP.Gophe ...

  8. 爬虫 requests模块的其他用法 抽屉网线程池回调爬取+保存实例,gihub登陆实例

    requests模块的其他用法 #通常我们在发送请求时都需要带上请求头,请求头是将自身伪装成浏览器的关键,常见的有用的请求头如下 Host Referer #大型网站通常都会根据该参数判断请求的来源 ...

  9. 爬虫-----selenium模块自动爬取网页资源

    selenium介绍与使用 1 selenium介绍 什么是selenium?selenium是Python的一个第三方库,对外提供的接口可以操作浏览器,然后让浏览器完成自动化的操作.     sel ...

随机推荐

  1. 设置程序集(dll)引用路径,整洁美观

    static class Program { //设置引用程序集路径 static Program() { AppDomain.CurrentDomain.SetData("PRIVATE_ ...

  2. ubuntu 在mac 的 Parallels 的分辨率问题

    安装 ubuntu系统,刚开始安装成功的时候分辨率只有800*600. 设置里面只有800*600一个选项. http://linuxbsdos.com/2014/10/31/solutions-fo ...

  3. wex5 教程 之 图文讲解 全局可观察变量与登陆状态全局控制

    一 先说说,这两个概念是什么意思 全局可观察变量?没听说过,只听过全局变量,那你out了,因为我要充分发挥绑定技术来控制页面部局,组件的隐藏与显示,文字内容,样式改变.看我博文大家知道,我想用绑定技术 ...

  4. WebLogic 的一些基本概念

    WebLogic 中的基本概念 上周参加了单位组织的WebLogic培训,为了便于自己记忆,培训后,整理梳理了一些WebLogic的资料,会陆续的发出来,下面是一些基本概念. Domain : 域是作 ...

  5. Linux之netstat命令详解

    简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Member ...

  6. urllib编码

    python: 1.unquote 2.decode 3.encode

  7. [转] GitHub上README.md教程

    点击阅读原文 最近对它的README.md文件颇为感兴趣.便写下这贴,帮助更多的还不会编写README文件的同学们. README文件后缀名为md.md是markdown的缩写,markdown是一种 ...

  8. POJ 3436:ACM Computer Factory(最大流记录路径)

    http://poj.org/problem?id=3436 题意:题意很难懂.给出P N.接下来N行代表N个机器,每一行有2*P+1个数字 第一个数代表容量,第2~P+1个数代表输入,第P+2到2* ...

  9. Dinic算法模板

    详解:http://blog.csdn.net/wall_f/article/details/8207595 算法时间复杂度:O(E * V * V) #include <cstdio> ...

  10. WPF:基础知识

    WPF:1.数据驱动 2.UI定义与运行逻辑分离 一. 1.编译 /t:exe 命令行程序:/t:winexe 图形用户界面程序:/t:library 动态链接库 2.启动 1)编译后生成的App.g ...