您的位置:新闻资讯 >文章内容
python爬虫抓取网站数据的一些技巧
来源:本站 作者:admin 时间:2019-05-08 14:45:24

用python做爬虫可以说是非常常见的,很多人都选择这门语言来做爬虫,因为它简洁。这里整理了一些python爬虫的相关技巧,希望对初学者有所帮助。


python爬虫抓取网站数据的一些技巧


一、最基本的操作


抓取某个站点。


import urllib2


content=urllib2.urlopen('http://XXXX').read()


二、使用代理IP


最头疼的事情莫过于封IP了,不过魔高一尺道高一丈,使用代理IP,轻松解决难题。


import urllib2


proxy_support=urllib2.ProxyHandler({'http':'http://XX.XX.XX.XX:XXXX'})


opener=urllib2.build_opener(proxy_support, urllib2.HTTPHandler)


urllib2.install_opener(opener)


content=urllib2.urlopen('http://XXXX').read()


三、cookie的处理


登陆的时候不得不面对cookie,cookie不处理好,很可能被目标服务器发现爬虫行为,进而做出限制。


import urllib2, cookielib


cookie_support=urllib2.HTTPCookieProcessor(cookielib.CookieJar())


opener=urllib2.build_opener(proxy_support, cookie_support, urllib2.HTTPHandler)


urllib2.install_opener(opener)


content=urllib2.urlopen('http://XXXX').read()


四、User-Agent的处理


爬虫行为很令人反感,恨不得杀之后快,但如果伪装成浏览器访问时,目标服务器就视而不见了。如何伪装呢,这就要通过修改HTTP包中的Header的User-Agent来实现了。


headers={


'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'


}


req=urllib2.Request(


url='http:/***/****',


data=postdata,


headers=headers


)


当然,更好的办法是搜集很多浏览器的User-Agent,然后随机使用。


五、多线程抓取信息


不会多线程抓取的爬虫不是好爬虫,由于顾忌到反爬策略,尽量模拟人工访问,速度自然不可能太快,所以只能多线程来抓取了。


from threading import Thread


from Queue import Queue


from time import sleep


#q是任务队列


#NUM是并发线程总数


#JOBS是有多少任务


q=Queue()


NUM=2


JOBS=10


#具体的处理函数,负责处理单个任务


def do_somthing_using(arguments):


print arguments


#这个是工作进程,负责不断从队列取数据并处理


def working():


while True:


arguments=q.get()


do_somthing_using(arguments)


sleep(1)


q.task_done()


#fork NUM个线程等待队列


for i in range(NUM):


t=Thread(target=working)


t.setDaemon(True)


t.start()


#把JOBS排入队列


for i in range(JOBS):


q.put(i)


#等待所有JOBS完成


q.join()


关于python的爬虫技巧就总结到这里了,还有很多小技巧这里就不一一说明,期待各位一一整理,祝大家工作愉快,爬虫需要代理IP可以联系精灵代理。


相关文章内容简介
在线客服
大客户VIP渠道
点击这里给我发消息
讨论QQ群
HTTP代理IP爬虫
客服电话
13318873961