Python爬虫:网络信息爬取与处理知识梳理

简介: Python爬虫:网络信息爬取与处理知识梳理

HTTP协议

应用层协议

无状态:每次连接,传输都是独立的

无连接:每次连接只处理一个请求


HTTP请求

GET:没有request body

POST: 有request body


HTTP状态码

2xx:成功

3xx:跳转

4xx: 客户端错误 403 Forbidden 没有登录,或ip被封

5xx:服务端错误


python urllib2会自动302跳转


爬取策略

种子站点

深度优先

广度优先


去重策略

1、数据库unique字段存访问过的url 效率太低

2、hashset存访问过的url O(1) 消耗内存

3、md5计算访问过的url后保存到hashset或数据库 碰撞概率较小

4、bit-map,访问过的url的md5值再经过哈希函数映射到bitset某一位 碰撞概率较大

5、bloom filter 使用多个哈希函数,创建一个m位的bitset,先初始化所有位为0,然后选择k个不同的哈希函数,第i个哈希函数对字符串str哈希的结果记为h(i, str),且h(i, str)的范围是0 - m-1


评估网页数量

百度:site:www.mafengwo.cn

google:site:www.mafengwo.cn/travel-scenic-spot


pip install murmurhash3 bitarray pybloomfilter


安装以下两个组件之后依然安装失败

visualcppbuildtools_full.exe

vc_redist.x64.exe


http://www.mafengwo.cn/robots.txt


Sitemap

top-down


pip install lxml


爬取工具

多线程:线程来回切换造成额外开销

多进程多ip,可以提高效率

数据库具有读写保护


分布式数据库 mongodb, redis, hbase

分布式爬虫

分布式系统 master - slave 主从模式


PageRank

数量:指向A页面的链接越多,A越重要

质量:指向A页面的页面质量越高,A越重要


有向图

A -> B -> c -> D

B -> A -> D

C -> A

D -> B -> C


A的PR值:

PR(A) = PR(B) + PR(c)


按照概率:

PR(A) = PR(B)/2 + PR(c)/1


网站如何发现爬虫

1、单一IP非常规的访问频次

2、单一IP非常规的数据流量

3、大量重复简单的网站浏览行为

4、只下载网页,没有后续的js,css请求

5、通过一些陷阱来发现爬虫,例如:一些通过css对用户隐藏的链接,只用爬虫才会访问


反爬:

1、User-Agent

2、基于流量的拒绝:开启带宽限制模块,设置访问最大带宽,每个IP最多3个链接,最大1M/s

3、基于Ip连接的拒绝


可能被发现网站发现

301, 4xx, 500


反爬应对措施

1、动态切换IP,代理服务器 路由器断线重连

2、多主机策略

3、爬慢点,不要攻击主机,找到访问频次的临界点

4、把爬虫放到访问频繁的主站IP的子网下,例如教育网

5、频繁改变自己User-Agent

6、探测陷阱,比如nofollow, display:none

7、如果使用规则进行批量爬取,需要对规则进行组合

8、如果可能按照robots.txt文明爬取


动态网页

PhantomJS + selenium


browser.set_window_size(1280, 2400)


browser.close()

browser.quit()


ignore-image = True 不加载图片,加快速度


URL:

完整路径: http://www.baidu.com

绝对路径: //www.baidu.com

相对路径: /tieba


杀掉所有PhantomJS进程

subprocess.call(“pgrep phantomjs | xargs kill”)


重复网页

完全重复

内容重复

布局重复

部分重复


查重算法:文本相似度

特征提取:分词加权成向量

高维空间夹角越小相似度越高

v1 * v2 = |v1||v2|cosa


海明距离simhash:两个二进制串中不同位的数量

pip install simhash


验证码识别

pillow

pytesseract


正文提取

1、 标签模板

2、 pygoose https://github.com/grangier/python-goose (py2)


文本分类

结巴分词jieba

tf-idf

pip install sklearn scipy numpy


搜索

elasticsearch

相关文章
|
17天前
|
数据采集 存储 XML
Python爬虫定义入门知识
Python爬虫是用于自动化抓取互联网数据的程序。其基本概念包括爬虫、请求、响应和解析。常用库有Requests、BeautifulSoup、Scrapy和Selenium。工作流程包括发送请求、接收响应、解析数据和存储数据。注意事项包括遵守Robots协议、避免过度请求、处理异常和确保数据合法性。Python爬虫强大而灵活,但使用时需遵守法律法规。
|
18天前
|
数据采集 缓存 定位技术
网络延迟对Python爬虫速度的影响分析
网络延迟对Python爬虫速度的影响分析
|
19天前
|
数据采集 Web App开发 监控
高效爬取B站评论:Python爬虫的最佳实践
高效爬取B站评论:Python爬虫的最佳实践
|
15天前
|
安全 Linux 网络安全
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息。本文分三部分介绍 nmap:基本原理、使用方法及技巧、实际应用及案例分析。通过学习 nmap,您可以更好地了解网络拓扑和安全状况,提升网络安全管理和渗透测试能力。
65 5
|
14天前
|
数据采集 前端开发 JavaScript
除了网页标题,还能用爬虫抓取哪些信息?
爬虫技术可以抓取网页上的各种信息,包括文本、图片、视频、链接、结构化数据、用户信息、价格和库存、导航菜单、CSS和JavaScript、元数据、社交媒体信息、地图和位置信息、广告信息、日历和事件信息、评论和评分、API数据等。通过Python和BeautifulSoup等工具,可以轻松实现数据抓取。但在使用爬虫时,需遵守相关法律法规,尊重网站的版权和隐私政策,合理控制请求频率,确保数据的合法性和有效性。
|
18天前
|
SQL 安全 算法
网络安全的隐形盾牌:漏洞防御与信息加密的艺术
【10月更文挑战第36天】在数字世界的海洋中,网络安全犹如一艘船的保护罩,守护着我们的隐私和数据安全。本文将揭开网络安全的神秘面纱,从常见的网络漏洞到先进的加密技术,再到培养必要的安全意识,我们将一步步构建起防御的堡垒。文章不仅分享技术细节,还强调了在个人和组织层面采取积极措施的重要性。
|
20天前
|
数据采集 存储 JSON
Python爬虫开发中的分析与方案制定
Python爬虫开发中的分析与方案制定
|
24天前
|
数据采集 Web App开发 JavaScript
爬虫策略规避:Python爬虫的浏览器自动化
爬虫策略规避:Python爬虫的浏览器自动化
|
11天前
|
数据采集 JavaScript 程序员
探索CSDN博客数据:使用Python爬虫技术
本文介绍了如何利用Python的requests和pyquery库爬取CSDN博客数据,包括环境准备、代码解析及注意事项,适合初学者学习。
48 0
|
9天前
|
存储 数据挖掘 开发者
Python编程入门:从零到英雄
在这篇文章中,我们将一起踏上Python编程的奇幻之旅。无论你是编程新手,还是希望拓展技能的开发者,本教程都将为你提供一条清晰的道路,引导你从基础语法走向实际应用。通过精心设计的代码示例和练习,你将学会如何用Python解决实际问题,并准备好迎接更复杂的编程挑战。让我们一起探索这个强大的语言,开启你的编程生涯吧!