zl程序教程

您现在的位置是:首页 >  后端

当前栏目

爬虫相关概念学习笔记

爬虫笔记 相关
2023-09-11 14:20:48 时间

爬虫相关概念

what is?

爬虫:抓去网页数据的程序。

How to catch?

网页三大特征?

1.URL

2.HTML

3.HTTP/HTTPS

爬虫的设计思路?

1.确定需要爬去的网页的URL地址

2.通过HTTP协议来获取对应的HTML页面

3.提取HTML里有用的数据

if 有用:

save

else:

重复步骤2

如何抓取HTML页面:

HTTP请求的处理,urllib,urllib2,requests

处理后的请求可以模拟浏览器发送请求,获取服务器响应的文件

解析服务器相应内容:

re,xpath,beautifulSoup4,jsonPath,pyquery等

正则,等匹配规则

如何采集动态HTML,验证码的处理:

通用的动态页面采集:Selenium+PhantomJS(自动化测试工具+无界面浏览器,可以模拟真实浏览器)

Scrapy框架Pyspider

分布式策略:

Scrapy-redis,以redis数据库为核心的组件,让scrapy支持分布式,请求指纹去重,请求分配,数据临时存储

Ajax方式加载的页面,数据格式一定是json

通用爬虫和聚焦爬虫

通用爬虫:搜索引擎用的爬虫系统(一般遵循Robots协议)

聚焦爬虫:爬虫程序员针对某种内容爬虫

面向主题,需求爬虫

HTTP,HTTPS

HTTP端口:80

HTTPS端口:443

爬虫的抓取过程可以理解为模拟浏览器操作的过程

urllib2库

urllib2的官方文档https://docs.python.org/2/library/urllib.html

def urlopen()常用3个参数 url, data, timeout

def urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT):

global _opener

if _opener is None:

_opener = build_opener()

return _opener.open(url, data, timeout)

缺点: urlopen()不支持构造请求

urllib2.request() 去构造请求对象

3个常用方法

print response.getcode()

print response.geturl()

print response.info()

handler处理器和自定义opener

openener:是urllib2.openerDirector的实例,urlopen是一个特殊的opener(模块帮我们构建好的)

但是urlopen()不支持代理,cookie等,

如果要支持就必须:

1.使用相关的handler处理器(HTTPhandler),创建特定功能的 处理器对象。

2.使用urllib2.build_opener()方法使用这些处理器对象,创建自定义的opener对象

3.使用自定义的opener对象,调用open()方法发送请求(或者用urllib2.install_opener()方法)。

URLerror HTTPerror

Cookielib库 和CookieProcessor处理器:

Cookielib:主要用于存储cookie对象。

CookieProcessor:主要用于处理cookie对象

cookielib库:

父类:CookieJar

子类:FileCookieJar

孙类:MozillaCookieJar(继承FireFox)和LWPCookieJar(新标准)