爬虫: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 ...
随机推荐
- toStirng()与Object.prototype.toString.call()方法浅谈
一.toString()是一个怎样的方法?它是能将某一个值转化为字符串的方法.然而它是如何将一个值从一种类型转化为字符串类型的呢? 通过下面几个例子,我们便能获得答案: 1.将boolean类型的值转 ...
- s3c2440 移值新内核 linux-4.1.36
arm-linuxgcc version 4.3.2 经过试验,最高可以编译到 linux-4.1.36 ,在高的版本会有错误 ,可能是 GCC 编译器版本较低造成. 解压比较麻烦还要装一个 xz x ...
- 关于block使用的5点注意事项
1.在使用block前需要对block指针做判空处理. 不判空直接使用,一旦指针为空直接产生崩溃. if (!self.isOnlyNet) { if (succBlock == NULL) { // ...
- 20160620001 FileUpload控件获取上传文件的路径
参考地址: http://bbs.csdn.net/topics/350051517 —————————————————————————————— 用js实现 <%@ Page Language ...
- jQuery 遍历(上)
目录: 一:定义二:遍历 DOM三:jQuery 参考手册 - 遍历 定义:什么是遍历?jQuery 遍历,意为"移动",用于根据其相对于其他元素的关系来"查找" ...
- python(九)re模块
python中re模块提供了正则表达式相关操作. 1. 字符串匹配: . 匹配除换行符以外的任意字符 \w 匹配字符或数字或下划线或汉字 \s 匹配任意空白字符 \d 匹配数字 \b 匹配单词 ...
- [转]C#读写TEXT文件
1.使用FileStream读写文件 文件头: using System; using System.Collections.Generic; using System.Text; using Sys ...
- POI 导出Excel
package east.mvc.utils; import java.io.*; import java.lang.reflect.*; import java.text.SimpleDateFor ...
- hdu 4283 You Are the One 区间dp
You Are the One Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- jQuery核心之 $
参考jQuery官网API文档 $ 和 $() 的区别很重要: 1.$(document).ready() 和 $(document).load() 的 区别: 前者等到DOM准备好了之后就会 ...