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

相关文章
|
2月前
|
数据采集 Web App开发 数据安全/隐私保护
实战:Python爬虫如何模拟登录与维持会话状态
实战:Python爬虫如何模拟登录与维持会话状态
|
2月前
|
运维 监控 数据可视化
Python 网络请求架构——统一 SOCKS5 接入与配置管理
通过统一接入端点与标准化认证,集中管理配置、连接策略及监控,实现跨技术栈的一致性网络出口,提升系统稳定性、可维护性与可观测性。
|
2月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的青少年网络使用情况分析及预测系统
本研究基于Python大数据技术,构建青少年网络行为分析系统,旨在破解现有防沉迷模式下用户画像模糊、预警滞后等难题。通过整合多平台亿级数据,运用机器学习实现精准行为预测与实时干预,推动数字治理向“数据驱动”转型,为家庭、学校及政府提供科学决策支持,助力青少年健康上网。
|
2月前
|
数据采集 监控 数据库
Python异步编程实战:爬虫案例
🌟 蒋星熠Jaxonic,代码为舟的星际旅人。从回调地狱到async/await协程天堂,亲历Python异步编程演进。分享高性能爬虫、数据库异步操作、限流监控等实战经验,助你驾驭并发,在二进制星河中谱写极客诗篇。
Python异步编程实战:爬虫案例
|
3月前
|
数据采集 存储 XML
Python爬虫技术:从基础到实战的完整教程
最后强调: 父母法律法规限制下进行网络抓取活动; 不得侵犯他人版权隐私利益; 同时也要注意个人安全防止泄露敏感信息.
753 19
|
2月前
|
数据采集 存储 JSON
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
|
2月前
|
数据采集 存储 JavaScript
解析Python爬虫中的Cookies和Session管理
Cookies与Session是Python爬虫中实现状态保持的核心。Cookies由服务器发送、客户端存储,用于标识用户;Session则通过唯一ID在服务端记录会话信息。二者协同实现登录模拟与数据持久化。
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
282 17
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
234 10
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。

推荐镜像

更多