网络爬虫

网络爬虫(一),网络爬虫(

import urllib.request  #调入要使用的库
url = 'https://www.baidu.com'
data = urllib.request.urlopen(url)  #urlopen用来打开一个网页
data = data.read().decode("utf-8")#这里的rend()是必须的,否则不能打印源码。转成utf-8
print(data)
最后显示:

 

import urllib.request
#调入要使用的库 url = ‘ =
urllib.request.urlopen(url) #urlopen用来打开一个网页d…

import urllib.request

print ‘.’,

3.3伪装浏览器

proxy_support = urllib2.ProxyHandler(proxies)

Connection: Keep-Alive

若存在验证码,此时采用response = requests_session.post(url=url_login,
data=data)是不行的,做法应该如下:


response = urllib2.urlopen(full_url)

3.2 支持自动跳转

相关参考:网络爬虫-验证码登陆

•importurllib.request

urllib2.install_opener(opener) #
安装opener,此后调用urlopen()时都会使用安装过的opener对象

‘Accept-Language’:’en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3′,

import requests

5.使用第三方模块快速抓取与解析

full_url = url+’?’+data

data=oper.read()

retryTimes = 20

使用第三方模块快速抓取与解析:

response = requests.get(url=url, proxies=proxies)

‘Accept’:’text/html, application/xhtml+xml, */*’,

此外,对于带有查询字段的url,get请求一般会将来请求的数据附在url之后,以?分割url和传输数据,多个参数用&连接。

req=urllib.request.Request(url,headers={

使用代理,更新IP。

Content-Length: 80137

headers = {‘User-Agent’:’XXXXX’} #
伪装成浏览器访问,适用于拒绝爬虫的网站

HTTP 报文分两种:请求报文响应报文

验证码识别。

safe=”, encoding=None, errors=None)

req = urllib2.Request(url=url, headers=headers)

Accept-Language: en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3

Python学习网络爬虫主要分3个大的版块:抓取分析存储

‘Accept-Language’:’en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3′,

相关参考:网易新闻排行榜抓取回顾

f_obj.close()

import urllib2

oper=makeMyOpener()

print ‘.’,

oper=urllib.request.urlopen(req)

Requests,Urllib2都可以使用time库的sleep()函数:

Cache-Control: private

参考项目:验证码识别项目第一版:Captcha1

import urllib.request

headers = {‘Referer’:’XXXXX’}

Date: Mon, 29 Sep 2014 13:07:01 GMT

Urllib2:

url=”

7.
自动化测试工具Selenium

Host: www.baidu.com

另外,比较常用的爬虫框架Scrapy,这里最后也详细介绍一下。

我用 IE 浏览器访问百度首页的时候, 浏览器发出去的请求报文如下:

可以利用开源的Tesseract-OCR系统进行验证码图片的下载及识别,将识别的字符传到爬虫系统进行模拟登陆。当然也可以将验证码图片上传到打码平台上进行识别。如果不成功,可以再次更新验证码识别,直到成功为止。

GET,POST, HEAD, PUT, DELETE 方法

抓取之后就是对抓取的内容进行分析,你需要什么内容,就从中提炼出相关的内容来。

2. 

分析

save_path=’D:temp.out’

Scrapy是一个基于Twisted的开源的Python爬虫框架,在工业中应用非常广泛。

defsaveFile(data):

对于网站有验证码的情况,我们有三种办法:

•urllib.request.urlopen(url,

服务器响应请求,发回网页内容。

forkey,valueinhead.items():

3.2 时间设置

data=uop.read()

Httplib2:

•url_values=urllib.parse.urlencode(data)

内容以什么形式存储?

Connection: close

这里,若使用Google
Chrome分析”请求“对应的链接(方法:右键→审查元素→Network→清空,点击”加载更多“,出现对应的GET链接寻找Type为text/html的,点击,查看get参数或者复制Request
URL),循环过程。

Accept-Language: en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3

Urllib2:data为string

•解析:字典data转换为’word=Jecvay+Notes’的字符串

content = requests.get(url).content

1.1 抓取指定页面

import urllib, urllib2

})

抓取大多数情况属于get请求,即直接从对方服务器上获取数据。

5.
多进程抓取

顺便说说文件操作. Python 的文件操作还是相当方便的.
我们可以讲抓回来的数据 data 以二进制形式保存, 也可以经过 decode()
处理成为字符串后以文本形式保存.
改动一下打开文件的方式就能用不同的姿势保存文件了. 下面是参考代码:

分析出我们需要的内容之后,接下来就是存储了。

Vary: Accept-Encoding

print “response headers:”, response.headers

data=None, [timeout, ]*,cafile=None,capath=None,cadefault=False)

time.sleep(1)

•解析:urlopen()函数,这个函数返回一个http.client.HTTPResponse对象:

Requests:

returnopener

import urllib2

Server: BWS/1.1

常见的分析工具有正则表达式,BeautifulSoup,lxml等等。

print(data.decode())

return session.post(*arg)

# head: dict of header

except:

请求报文的请求行首部行

try:

Content-Type: text/html; charset=utf-8

使用代理和使用cookie登陆之前已经讲过,下面讲一下验证码识别。

Accept: text/html, application/xhtml+xml, */*

response_captcha = requests_session.get(url=url_login,
cookies=cookies)

‘Connection’:’Keep-Alive’,

它的工作原理是:从网页的url加载网页的源代码之后,会在浏览器里执行JavaScript程序。这些程序会加载更多的内容,“填充”到网页里。这就是为什么如果你直接去爬网页本身的url,你会找不到页面的实际内容。

opener=urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))

data = {‘data1′:’XXXXX’, ‘data2′:’XXXXX’}

发表评论

电子邮件地址不会被公开。 必填项已用*标注