爬虫: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 ...
随机推荐
- [CrunchBang]tint2默认设置
#--------------------------------------------- # TINT2 CONFIG FILE #-------------------------------- ...
- 自定义view
这两篇文章不可错过,是最靠谱的基础文献.总的来说,如果想完全定制,就继承与于View类:如果只是在原有控件基础上拓展,那就继承TextView.Button或者LinearLayout等.接下来,就以 ...
- JavaScript DOM 编程艺术(第2版)读书笔记 (9)
三位一体的网页 结构层:由HTML或XHTML之类的标记语言负责创建: 表示层:由CSS负责完成: 行为层:负责内容应该如何响应事件这一问题.这是由JavaScript语言和DOM主宰的领域. 分离 ...
- IOS Xcode7 新建PCH文件
第一步:新建文件找到iOS中的Othere点击PCH File 点击Next 第二步:修改文件名为当前工程名(一般与工程名同名),勾选Targets,点击create创建 第三步:如图选中红框中的路径 ...
- http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application
The Contoso University sample web application demonstrates how to create ASP.NET MVC 5 applications ...
- C++字符串与转移字符
先看以下代码: #include<iostream> #include<string> using namespace std; int main() { string str ...
- visual studio插件开发dll类库免加全局缓存处理办法
1.卸载VSIXProject 2.然后编辑*.csproj 修改如下: 3.重新加载项目 编辑source.extension.vsixmanifest 添加资产: 完事后,直接安装VISX就可以了
- php 中的常量
1.__FINE__ 返回当前常量所在的行号. 2.__FILE__ 返回文件的完整路径和文件名. 3.__FUNCTION__ 返回函数名称. 4.__CLASS__ 返回类名称. 5.__METH ...
- End Routine
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- 使用IE11抓包,防止在网页跳转时抓包数据被清除的方法
引:最近在研究使用python实现模拟登陆各大网站,在使用IE11进行抓包分析网站登陆的逻辑结构的时候,发现每次在抓包的时候,当网页跳转的时候,抓包数据会被清除,让我很是郁闷,最终在查阅相关资料以及自 ...