python大数据算法_互联网大数据:Python实现网络爬虫(算法编程技巧)

用来访问Internet资源。

import urllib2, cookielib

urllib,urllib2,json,cookielib库的使用。opener = urllib2.build_opener(urllib2.httpcookieprocessor(cookiejar))。opener=urllib2.build_opener(cookie_support,urllib2.httphandler)。

opener = urllib2.build_opener(cookie_support)

urllib2.install_opener(opener)

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

每次用new创建一个对象实例后,对象实例存储在堆区域中,这部分空间也被jvm的垃圾回收机制管理。注:我们知道spring mvc是多线程单实例的mvc框架,就是说,对于同一个controller,只会生成一个实例来处理所有的请求,因此bean实例只会实例化一次,并被存放在工厂中,以供其他请求使用。而该工具的作用就是可以快速的选择要加载的cpk补丁文件,并生成新的dpfilelist.bin文件,而无需手动添加代码,操作也是十分的便利,玩家可以很容易的更新补丁。

cookie = 'PHPSESSID=91rurfqm2329bopnosfu4fvmu7;kmsign=55d2c12c9b1e3; KMUID=b6Ejc1XSwPq9o756AxnBAg='

request.add_header('Cookie', cookie)

4)伪装成浏览器

某些网站对爬虫一律拒绝请求。所以用urllib2直接访问网站经常会出现HTTP Error 403: Forbidden的情况。对有些header要特别留意,Server端会针对这些 header做检查,例如:对于User-Agent有些Server或Proxy会检查该值,用来判断是否是浏览器发起的Request;对于Content-Type在使用REST接口时,Server会检查该值,用来确定HTTPBody中的内容该怎样解析。这时可以通过修改http包中的header来实现。

import urllib2

headers = {

rv:1.8.0.9) gecko/20070101 firefox/1.5.0.9 mozilla/5.0 (x11。--user-agent='mozilla/5.0 (windows nt 6.0) gecko/20100101 firefox/14.0.1'。 rv:1.9.1.6) gecko/20091201 firefox/3.5.6'。

}

request = urllib2.Request(

url = 'http://my.oschina.net/jhao104/blog?catalog=3463517',

headers = headers

)

print urllib2.urlopen(request).read()

5)页面解析

使用正则表达式解析网页,

入门:,

测试:。

builder模式及其dialog系统源码分析,责任链模式模式及其android系统事件分发机制详解,android handler源码分析,packagemanagerservice源码解析及其apk安装原理,解释器模式及其在packageparser源码中的运用,activity启动流程源码全解析,listview的复用机制源码层分析,属性源码详解,message链表原理,binder核心原理与架构设计。19. 修改xml解析支持库,增加写出cdata数据功能,解决解析xml时错误的丢弃换行和tab字符的bug,解决读取节点值时对cdata数据进行转义处理的bug。具体内容:初学者快速入门:java web编程入门学习与训练及该部分内容全程技术支持编程视频录像:80小时项目开发全程录像典型实例应用:2500个典型实例实用项目精讲:32个实用项目开发技术全解:入门训练营超级编程课堂开发资源库 数字插件库项目程序源码:2870个实用源码界面素材参考:80套设计界面。

6)验证码的处理

对于一些简单的验证码,可以进行简单的识别。对于有些非常复杂的验证码,可以通过打码平台进行人工打码。

7)gzip压缩

数据终端设备以二进制串行信号形式提供发送的数据,经接口转换为内部逻辑电平送入发送部分,经调制电路调制成线路要求的信号向线路发送。图4.1展示了一个.sst文件的物理划分结构,同log文件一样,也是划分为固定大小的存储块,每个block分为三个部分,红色部分是数据存储区,蓝色的type区用于标识数据存储区是否采用了数据压缩算法(snappy压缩或者无压缩两种)网络爬虫算法书籍,crc部分则是数据校验码,用于判别数据是否在生成和传输中出错。tcp(传输控制协议)要求数据接收设备定期确认收到数据,然后,tcp窗口的大小会在数据发送设备停止发送和等待数据接收确认前,决定数据的传输量。

import urllib2, httplib

request = urllib2.Request('http://xxxx.com')

request.add_header('Accept-encoding', 'gzip')

opener = urllib2.build_opener()

f = opener.open(request)

要点:创建Request对象,添加Accept-encoding头信息告诉服务器能接受gzip压缩数据,然后解压缩数据。

import StringIO

import gzip

compresseddata = f.read()

但这里显然不需要也最好不要将图像写进硬盘,因此需要一个内存中的“文件”,这就是stringio。buf=stringio.stringio(jpeg[0:-1])。 im0 = image.open(stringio.stringio(browser.get_screenshot_as_png()))。

gzipper = gzip.GzipFile(fileobj=compressedstream)

print gzipper.read()

8)多线程并发抓取

单线程太慢的话,就需要多线程,以下是个简单的并发的线程池模板。虽然Python多线程很鸡肋,但是对于爬虫这种网络频繁型网络爬虫算法书籍,还是能一定程度提高效率的。

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()

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-116057-1.html

你可能感兴趣的:(python大数据算法)