全国服务热线:4008-888-888

技术知识

公众号答题小程序-人人会Python系列(1)——采集网

--------

公众号答题小程序

-------ZERO,SEO执着喜好者  人人会Python系列(1)——收集网页页面仿真模拟表单利器pycurl
针对论坛较普遍的贴自身写的编码的帖子,总的而言其实不是很强烈推荐,将别人的编码套入自身的要求常常比较难。而通用性性的实例教程,能够帮到更多人更轻松的搞定自身的技术性要求,这些是相对性更强烈推荐在论坛共享的內容。
这边就开一个系列,讲Python能够怎样用来解决一些SEO要求,关键是一些控制模块的应用方式等。至于Python最基本的英语的语法、种类等等专业知识,此处不做多的详细介绍,一般到京东买海外出版发行的最热销的有关书本看看便可。
本帖要详细介绍的是pycurl,它一般被用来收集网页页面、与仿真模拟表单递交,是完成全自动化实际操作的重要环节。
安裝pycurl的方法是,先安裝python-setuptools再实行easy_install pycurl,或在ubuntu等系统软件立即运作apt-get install python-pycurl(强烈推荐,各类控制模块一般状况下最非常容易的安裝方法),或在windows等系统软件找exe的安裝包。
例如大家想查某个重要词的有木有大家的网站排着,一个简易版本号的编码以下:

import urllib, urllib2

kw = '团购'
html = urllib2.urlopen('s?wd=' + urllib.quote_plus(kw))
if '.' in html:
        print '有排名'
else:
        print '无排名'拷贝编码
但这段编码虽然能粗略地完成作用,却有许多难题在。例如有时免费下载检索結果页会一直打不开,这段编码就会卡住;又如这段编码沒有掩藏自身是访问器,数次查排名非常容易被检索模块封IP。
虽然urllib2控制模块相互配合其它一些控制模块,也能做到各种各样各种各样的事儿,可是比较繁琐。pycurl来做些事儿要是根据一些主要参数的配备便可。

import pycurl
import StringIO

def curl(url, debug=False, **kwargs):
     while 1:
            try:
                 s = StringIO.StringIO()
                 c = pycurl.Curl()
                 c.setopt(pycurl.URL, url)
                 c.setopt(pycurl.REFERER, url)
                 c.setopt(pycurl.FOLLOWLOCATION, True)
                 c.setopt(pycurl.TIMEOUT, 60)
                 c.setopt(pycurl.ENCODING, 'gzip')
                 c.setopt(pycurl.USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36')
                 c.setopt(pycurl.NOSIGNAL, True)
                 c.setopt(pycurl.WRITEFUNCTION, s.write)
                 for k, v in kwargs.iteritems():
                     c.setopt(vars(pycurl)[k], v)
                 c.perform()
                 c.close()
                 return alue()
            except:
                 if debug:
                     raise
                 continue

kw = '团购'
html = curl('s?wd=' + urllib.quote_plus(kw))
if '.' in html:
        print '有排名'
else:
        print '无排名'拷贝编码
pycurl版本号的编码尽管看上去比前面个版本号麻烦很多,但能够完成平稳的免费下载百度搜索的检索結果页,且不可易被封IP(但具体用于监管时,還是要做IP是不是被封的分辨,若被封就全自动延时重试)。
这里的curl方式是一个通用性的方式,能够将它储存到一个控制模块里边,下次免费下载网页页面立即curl(url)便可,无需反复进行上述编码。这是很关键的一点,SEO写程序一般只是用来处理自身的要求,没必要太深层次实际某编码究竟是为何,要是会用就好。特别在学习培训前期,编码与其说是写出来的,不如说是一块块拼出来的,要是能处理难题就好。
解释一下上述编码中的几个主要参数:
REFERER,浏览该网页页面前面浏览的甚么网页页面,一般用于掩藏访问器
FOLLOWLOCATION,在网页页面设定301、302等跳转时,是不是追随跳转
TIMEOUT,网页页面多少秒沒有开启时,出错
ENCODING,能够开启gzip缩小,提升免费下载速度
USERAGENT,设定访问器标识,掩藏访问器的关键点
NOSIGNAL,若不设定这项,多进程应用pycurl时会出错,一般总是提议开启
URL和WRITEFUNCTION是免费下载网页页面用的,必备。
以上主要参数在我写的curl方式中,已默认设置配备,其它主要参数能够根据**kwargs来追加。
主要参数表明见:libcurl/
来一个post仿真模拟递交表单的事例解释下:

from base import curl
import urllib

post = urllib.urlencode({
        'key': 'value'       
})

print curl(url, POSTFIELDS=post)拷贝编码
递交表单就是这么便捷,能够轻松进行大批量申请注册发布、数据信息获得等每日任务。
-----------------------------
若有没搞清楚的地区,提议先百度搜索有关专业知识。但如果的确是帖子没写搞清楚,欢迎发问。
win下安裝python 是沒有安裝pycurl的,因而要再安裝pycurl
forum.php?m ... l%E5%AE%89%E8%A3%85
这里有连接
能够考虑到用wubi安裝ubuntu(行书 我 還是没安裝- -|||)
9-16行是设定收集的主要参数,也就是说,以便更好地仿真模拟一般客户,是否就该设定一些任意的主要参数,这样就更像一般客户了?有点疑惑的是14行那,假如我用其他,蜘蛛就会认为是这么个顾客端在浏览了吧?
lewin
为何的总提醒 c.setopt(pycurl.NOSIGNAL, True) 这段不正确呢
 File BaiduRank.py , line 26
Python的缩进坑。调剂下每行前面的tab或空格。
lycfaint
9-16行是设定收集的主要参数,也就是说,以便更好地仿真模拟一般客户,是否就该设定一些任意的主要参数,这样就更像一 ...
随网站防收集体制而异,一般任意设定无助于绕过防收集体制。
52gcs
集成化多进程了嘛

ZERO
近期在学多进程,这物品還是需要懂些定义性的物品觉得不太好讲的,立即封裝起来用好了。。我本人学习培训进度很慢。
莫山
近期在学多进程,这物品還是需要懂些定义性的物品觉得不太好讲的,立即封裝起来用好了。。我本人学习培训进度很 ...
python的多进程看得我一头雾水,后来索性一直都用单进程来解决了~
vscvscvsc
python的多进程看得我一头雾水,后来索性一直都用单进程来解决了~
在网上的全部实例教程我都看不懂,如今在看书,终究能看懂了。 ---------

公众号答题小程序

------------


在线客服

关闭

客户服务热线
4008-888-888


点击这里给我发消息 在线客服

点击这里给我发消息 在线客服