import urllib2
import pycurl
import cStringIO as _StringIO
import sys
import shutil
import lxml.html as H
import threading
# 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)
分享到:
相关推荐
Python中的`pycurl`是一个非常实用的库,它允许Python程序与各种网络协议进行交互,尤其是HTTP和HTTPS。`pycurl`是基于libcurl库的Python接口,提供了丰富的功能,如HTTP请求、文件上传、代理服务器支持、SSL加密、...
### Python的pycurl包用法详解 #### 一、引言 `pycurl` 是一个功能强大的 Python 库,用于处理 URL 和网络请求。它基于 libcurl 库编写,因此性能...希望本文介绍的这些知识点能够帮助你在项目中更好地利用 `pycurl`。
Python是世界上最受欢迎的编程语言之一,特别是在Web开发和数据分析领域。在Windows环境下使用Python时,...了解如何正确选择和安装这些文件,以及如何利用`pycurl`进行网络操作,对任何Python开发者来说都是必备技能。
sudo apt-get install python-pycurl ``` 安装完成后,你可以通过Python来验证Pycurl的版本: ```python import pycurl print(pycurl.version) ``` 【Pycurl的使用】 Pycurl提供了三个主要的对象:Curl(), Curl...
《Python的CURL库:PyCurl深度解析》 PyCurl是Python中一个非常重要的库,它提供了对libcurl的接口,使Python程序能够处理各种网络协议,如HTTP、HTTPS、FTP、FTPS等。libcurl是一个强大的URL传输库,而PyCurl则将...
总之,PyCurl是Python进行网络编程的重要工具,它提供了丰富的功能和高度的灵活性,使得开发者可以高效地处理网络请求,无论是简单的GET请求还是复杂的文件上传下载,都可以轻松应对。通过学习和熟练使用PyCurl,...
pycurl使得Python程序员能够方便地利用libcurl的强大功能,包括HTTP、HTTPS、FTP、FTPS等协议的支持,以及对代理、SSL加密、cookie、文件上传和下载等多种功能的处理。 版本号“7.43.0.3”代表了pycurl的特定发行版...
通过PyCurl,Python开发者可以利用libcurl的功能,如HTTP、HTTPS、FTP、FTPS、SMTP、POP3等多种协议的传输,以及HTTP2、TLS/SSL加密、cookie处理、HTTPPOST、代理、认证、重定向等复杂网络操作。 首先,我们来详细...
《PyCURL库详解及其在Windows 32位Python 2.6环境中的应用》 PyCURL是一个Python接口,用于libcurl,一个强大的HTTP、FTP、SMTP等网络协议的客户端库。PyCURL提供了丰富的功能,使得在Python中进行网络编程变得简单...
在Python中对网页进行GET/POST等请求,当需要考虑高性能的时候,libcurl是非常不错的选择,一般来说会比liburl、liburl2快不少,可能也会比Requests的效率更高。特别是使用PycURL的多并发请求时,更是效率很高的。...
以下将详细介绍如何利用Python进行网页抓取和解析。 首先,要抓取网页,我们可以使用`urllib.request`模块。在给定的例子中,`urllib.request.urlopen(url)`函数被用来打开指定的URL(如"http://google.cn/"),并...
cd pycurl-requestspython3 setup.py install [--user]快速开始>> > import pycurl_requests as requests>> > r = requests . get ( 'https://api.github.com/repos/dcoles/pycurl-requests' )>> > r . status_code...
rce和sql盲注脚本都在这里了,基于python哦!记得装模块 For this to work pycurl must be installed: pip install pycurl or apt-get install pycurl or apt-get install python-pycurl
PyCurl是一个强大的Python库,它为Python程序员提供了一个接口,可以方便地通过libcurl库进行URL传输。libcurl是一个广泛使用的跨平台库,用于在各种协议(如HTTP、HTTPS、FTP、FTPS等)下处理网络通信。PyCurl的...
以上内容涵盖了使用Python实现网络爬虫的一些基础知识和技术细节,包括使用标准库和第三方库进行网页请求、解析HTML内容以及利用Django框架实现更复杂的爬虫项目。希望这些知识点能够帮助读者更好地理解和掌握Python...
- 分布式爬虫:对于大规模的爬虫任务,可以利用多线程、多进程或分布式框架(如Scrapy)来提高效率。 总之,Python提供了丰富的库和工具,使得开发网络爬虫变得简单高效。从基础的HTTP请求到复杂的网页解析,...
因此,`Python-WWDCVideosDownloadURLCrawler` 这个项目应运而生,它利用Python编程语言实现了对这些视频下载链接的抓取,从而让用户能够离线观看。 【Python开发】 Python是一种广泛应用于Web开发、数据分析、...
介绍 BaseSpacePy是一个基于Python的SDK,可用于开发应用程序和脚本,以与Illumina的BaseSpace云计算解决方案一起用于下一代测序数据分析。... 您可以使用“ apt-get install python-pycurl”和“ apt-get install p
python 使用 pycurl 使用ip138爬取指定范围内ip地址信息。使用curl get方式获取指定范围ip地址信息并将信息存储到指定文件中。用户可以根据自己需要,修改curl的url地址和分析内容,从而扩展成自己所需要的爬虫插件