import urllib2
import pycurl
import cStringIO as _StringIO
import sys
import shutil
import lxml.html as H
import threading
import StorageClient as sc
import lame
# http transfer limits
accept_type = "*/*"
connection_timeout = 500
timeout = 800
low_speed = 200
low_speed_time = 120
max_size = 20485760 # 10MB
def get_curl(user_agent="MSIE"):
"initialize curl handle"
dev_null = _StringIO.StringIO()
curl_handle = pycurl.Curl()
curl_handle.setopt(pycurl.FOLLOWLOCATION, 1)
curl_handle.setopt(pycurl.MAXREDIRS, 5)
curl_handle.setopt(pycurl.CONNECTTIMEOUT, connection_timeout)
curl_handle.setopt(pycurl.TIMEOUT, timeout)
curl_handle.setopt(pycurl.NOSIGNAL, 1)
curl_handle.setopt(pycurl.LOW_SPEED_LIMIT, 100)
curl_handle.setopt(pycurl.LOW_SPEED_TIME, low_speed_time)
curl_handle.setopt(pycurl.HTTPHEADER, ["User-Agent: %s" % "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)", accept_type])
curl_handle.setopt(pycurl.MAXFILESIZE, max_size)
curl_handle.setopt(pycurl.COOKIEFILE, 'cookies.txt')
curl_handle.setopt(pycurl.COOKIEJAR, 'cookies.txt')
curl_handle.setopt(pycurl.WRITEFUNCTION, dev_null.write)
return curl_handle
def curl_fetch(curl_handle, url):
"retrieve url, return the content, http code, time, effective url"
fp = _StringIO.StringIO()
curl_handle.setopt(pycurl.URL, url)
curl_handle.setopt(pycurl.WRITEFUNCTION, fp.write)
# perform the transfer
try:
curl_handle.perform()
except pycurl.error, e:
print e
return (-1,0,0)
content_type = curl_handle.getinfo(pycurl.CONTENT_TYPE)
print curl_handle.getinfo(pycurl.CONTENT_TYPE)
print curl_handle.getinfo(pycurl.HTTP_CODE)
return (0,fp.getvalue(), content_type)
分享到:
相关推荐
在展开知识点前,需要明确几个概念:pycurl是一个Python模块,它包装了libcurl C库,用于创建URL请求并进行数据传输。libcurl是一个广泛使用的客户端端URL传输库,支持多种协议,包括HTTP、HTTPS、FTP等。HTTPS是...
**PyCurl for Python 2.7:网络数据传输库** PyCurl是Python编程语言的一个强大库,它为Python提供了libcurl库的功能。libcurl是一个用于处理URLs的跨平台库,支持多种协议,包括HTTP、HTTPS、FTP、FTPS等。在...
- `pyspider`作为爬虫框架,负责整体任务管理和调度,可以利用`pycurl`进行数据获取,并通过内置的JavaScript支持(比如与PhantomJS集成)处理动态加载的内容。 - 当遇到需要JavaScript渲染的页面时,`PhantomJS`...
《Python中的PyCurl库与Pyspider框架:安装与使用详解》 在Python的开发环境中,有时候我们需要处理HTTP和HTTPS请求,这时PyCurl库就显得尤为重要...通过合理地利用PyCurl,我们可以构建出强大的网络应用和爬虫系统。
pycurl 基于curl 官方只出版了32位版本 在http://www.lfd.uci.edu/~gohlke/pythonlibs/#pycurl中有非官方的64位版本
【Pycurl简介】 Pycurl是一个Python绑定库,它为Python程序员提供了强大的网络访问功能。Pycurl基于libcurl库,一个用C语言编写的跨平台库,用于处理多种互联网协议,包括HTTP、FTP、TFTP等。Pycurl因其高效、稳定...
本教程将专注于一个基于Python的网络爬虫框架,该框架利用了`pycurl`和`multicurl`库来提高爬取效率。`pycurl`是一个Python接口,用于libcurl,一个强大的URL传输库,而`multicurl`则是在`pycurl`基础上构建的多线程...
PyCurl可以利用libcurl的多线程和多连接特性,通过`setopt`设置`MAXCONNECTS`或使用`curl_multi_init`进行多线程操作。 6. **与其他库的集成**: PyCurl可以与BeautifulSoup、requests等其他Python库结合使用,...
pycurl-7.43.1-cp37-cp37m-win_amd64 PycURL。 PycURL is a Python interface to libcurl. PycURL can be used to fetch objects identified by a URL from a Python program, similar to the urllib Python module....
安装完成后,开发者便可以利用pycurl提供的强大功能编写网络应用。 总结起来,"pycurl-ssl-7.19.0.win32-py2.7.zip"是一个针对Python 2.7和32位Windows环境的pycurl库的SSL版本,它提供了全面的网络通信功能和强大...
Python是世界上最受欢迎的编程语言之一,特别是在Web开发和数据分析领域。在Windows环境下使用Python时,...了解如何正确选择和安装这些文件,以及如何利用`pycurl`进行网络操作,对任何Python开发者来说都是必备技能。
pycurl-7.43.0.2 Windows64位安装包,Windows安装pycurl,支持python版本3.6
64位windows pycurl安装包,可以直接按照后使用!已经在多台服务器上验证过!
pycurl使得Python程序员能够方便地利用libcurl的强大功能,包括HTTP、HTTPS、FTP、FTPS等协议的支持,以及对代理、SSL加密、cookie、文件上传和下载等多种功能的处理。 版本号“7.43.0.3”代表了pycurl的特定发行版...
`pycurl`的核心功能包括: 1. **HTTP方法支持**:`GET`、`POST`、`PUT`、`DELETE`等,可以方便地执行HTTP请求并获取响应数据。 2. **URL处理**:能够解析和构建URL,支持URL编码和解码。 3. **数据传输**:可以...
Python库是包含预编写代码的模块,开发者可以导入这些模块以利用其功能,无需从零开始编写所有代码。pycurl是一个Python接口,它封装了libcurl,一个用于处理URL的强大的客户端URL传输库。pycurl提供了丰富的HTTP和...
然而,有时候在安装或使用`pyspider`的过程中,可能会遇到一些依赖问题,比如标题中提到的`pycurl`缺失。`pycurl`是Python的一个库,它提供了对libcurl库的接口,用于处理URL,支持多种协议,如HTTP、HTTPS、FTP等,...
例如,发送POST数据可以这样做: ```python postfields = {'key1': 'value1', 'key2': 'value2'} c.setopt(c.POSTFIELDS, postfields) ``` 此外,pycurl还可以与Python的`BufferedWriter`类结合,实现数据的实时...