爬虫:pycurl模块的使用说明
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模块的使用说明的更多相关文章
- Python 的PyCurl模块使用
PycURl是一个C语言写的libcurl的python绑定库.libcurl 是一个自由的,并且容易使用的用在客户端的 URL 传输库.它的功能很强大,PycURL 是一个非常快速(参考多并发操作) ...
- http服务需要pycurl模块这样去监控服务
最近运维还是比较空闲,写篇自己的心得体会.做过运维的应该都做过http服务了.像一些电子商城,或者是一些互联网公司,web的服务之类是至关重要的,近期看了刘天斯大哥的书觉得自己运维平台应该也可以这样去 ...
- python关于SSL的认证--pycurl模块使用
今天在做微信支付退款接口的时候,因为需要使用到双向证书的认证,所以一开始是没有头绪的,后来在网上找到了相类似的教程,发现了pycurl模块,才成功实现了证书认证,教程链接:http://blog.cs ...
- python爬虫 urllib模块url编码处理
案例:爬取使用搜狗根据指定词条搜索到的页面数据(例如爬取词条为‘周杰伦'的页面数据) import urllib.request # 1.指定url url = 'https://www.sogou. ...
- python 爬虫 urllib模块 目录
python 爬虫 urllib模块介绍 python 爬虫 urllib模块 url编码处理 python 爬虫 urllib模块 反爬虫机制UA python 爬虫 urllib模块 发起post ...
- python pycurl模块
一.pycurl概述 PycURl是一个C语言写的libcurl的python绑定库.libcurl 是一个自由的,并且容易使用的用在客户端的 URL 传输库.它的功能很强大,在PyCURL的主页上介 ...
- python爬虫-urllib模块
urllib 模块是一个高级的 web 交流库,其核心功能就是模仿web浏览器等客户端,去请求相应的资源,并返回一个类文件对象.urllib 支持各种 web 协议,例如:HTTP.FTP.Gophe ...
- 爬虫 requests模块的其他用法 抽屉网线程池回调爬取+保存实例,gihub登陆实例
requests模块的其他用法 #通常我们在发送请求时都需要带上请求头,请求头是将自身伪装成浏览器的关键,常见的有用的请求头如下 Host Referer #大型网站通常都会根据该参数判断请求的来源 ...
- 爬虫-----selenium模块自动爬取网页资源
selenium介绍与使用 1 selenium介绍 什么是selenium?selenium是Python的一个第三方库,对外提供的接口可以操作浏览器,然后让浏览器完成自动化的操作. sel ...
随机推荐
- wex5 教程 之 图文讲解 后台管理界面设计与技巧
视频教程地址:http://v.youku.com/v_show/id_XMTgwOTAyMTkyMA==.html?from=s1.8-1-1.2&spm=a2h0k.8191407.0.0 ...
- Application.DoEvents():概念
When you run a Windows Form, it creates the new form, which then waits for events to handle. Each ti ...
- NS_ENUM vs. NS_OPTIONS
NS_ENUM用于定义普通枚举值,NS_OPTIONS用于定义位移相关操作的枚举值: typedef NS_ENUM(NSUInteger, EOCConnectionState) { EOCConn ...
- WebClient与WebRequest差异
WebRequst的使用 WebClient和HttpWebRequst是用来获取数据的2种方式,在我的这篇数据访问(2)中主要是讲的WebClient的使用,一般而言,WebClient更倾向于“按 ...
- SIP协议栈基础笔记
//------------------SIP基础------------------------// SIP是基于UDP的协议 UA(user Agent)用户代理 UAC(client)发起SIP ...
- Uva 10537 过路费
题目链接:http://vjudge.net/contest/143062#problem/C 题意: 给定一个无向图,大写字母是城市,小写字母是村庄,经过城市交过路费为当前货物的%5,路过村庄固定交 ...
- CentOS 安装Zookeeper-3.4.6 单节点
Dubbo 建议使用 Zookeeper 作为服务的注册中心. 注册中心服务器(192.168.3.71)配置,安装 Zookeeper: 1. 修改操作系统的/etc/hosts 文件中添加: # ...
- WPFの三种方式实现快捷键
最近,对wpf添加快捷键的方式进行了整理.主要用到的三种方式如下: 一.wpf命令: 资源中添加命令 <Window.Resources> <RoutedUICommand x:Ke ...
- CentOS7 运行级别
linux运行的级别7个级别运行级别的查看使用 runlevelrunlevelN 3 //运行在3级别,可以理解成命令行级别级别之间的切换需要使用init x 0 //关机3 //多用户的命令行级别 ...
- 图片溢出div问题的最终解决方案
2016.11.20备注: 此问题通过css的max-width:100%;即可解决. 前两天编写了一个前端页面,在本机上显示一切正常.不过在不断的测试中,发现了一个严重的问题,如果图片过大,会撑破d ...