python爬虫相关整理

 初级爬虫工程师

  1. Web前端的知识:HTML, CSS, JavaScript, DOM, DHTML, Ajax, jQuery,json等;
  2. 正则表达式,能提取正常一般网页中想要的信息,比如某些特殊的文字,链接信息,知道什么是懒惰,什么是贪婪型的正则;
  3. 会使用re, BeautifulSoup,XPath等获取一些DOM结构中的节点信息;
  4. 知道什么是深度优先,广度优先的抓取算法,及实践中的使用规则;
  5. 能分析简单网站的结构,会使用urllib,urllib2或requests库进行简单的数据抓取;

  中级爬虫工程师

  1. 了解什么是Hash,会使用简单的MD5,SHA1等算法对数据进行Hash以便存储;
  2. 熟悉HTTP,HTTPS协议的基础知识,了解GET,POST方法,了解HTTP头中的信息,包括返回状态码,编码,user-agent,cookie,session等;
  3. 能设置User-Agent进行数据爬取,设置代理等;
  4. 知道什么是Request,什么是Response,会使用Fiddle, Wireshark等工具抓取及分析简单的网络数据包;对于动态爬虫,要学会分析Ajax请求,模拟制造Post数据包请求,抓取客户端session等信息,对于一些简单的网站,能够通过模拟数据包进行自动登录;
  5. 对于比较难搞定的网站,学会使用phatomjs+selenium抓取一些动态网页信息;
  6. 并发下载,通过并行下载加速数据抓取;多线程的使用;

  高级爬虫工程师

  1. 能使用Tesseract,百度AI等库进行验证码识别;
  2. 能使用数据挖掘的技术,分类算法等避免死链等;
  3. 会使用常用的数据库进行数据存储,查询,如Mongodb,Redis(大数据量的缓存)等;下载缓存,学习如何通过缓存避免重复下载的问题;Bloom Filter的使用;
  4. 能使用机器学习的技术动态调整爬虫的爬取策略,从而避免被禁IP封号等;
  5. 能使用一些开源框架Scrapy,Celery等分布式爬虫,能部署掌控分布式爬虫进行大规模的数据抓取;

 

网站如何发现爬虫

一般来说,网站会有以下一些简单的策略发现爬虫程序:

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

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

  3)大量重复简单的网站浏览行为,只下载网页,没有后续的JS,CSS请求;

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

网站如何进行反爬

一般来说网站会采用下面两个简单的策略来防止爬虫:

1.大量使用动态网页,是的爬虫的爬取难度增加,重要数据都拿不到,即使爬虫采用了Web环境来渲染(内置浏览器),也会大大增加爬虫的负担和爬虫时间;(当然,采用动态加载的技术,对服务器的负担也会大大减轻)

2.基于流量的拒绝:

  开启带宽限制模块,限制每个IP最多连接数,最大带宽等;

爬虫如何发现自己可能被网站识别了

如果爬取过程中出现以下情况,那么小心了,你的爬虫可能被网站发现了:

    1.验证码出现;

    2.Unusual content delivery delay 非常规的延时;

    3.Frequent response with HTTP 403, 404, 301 or 50x error;

爬虫应对反爬的策略

我们可以从以下几个方面来考虑应对反爬:

1)User-Agent

2)代理服务器池

3)CookieJar等的管理

4)协议的细节考虑,如:需要大量的实践经验总结的

          抓取数据时不处理CSS,JS等;

          nofollow属性;css的display属性;探测陷阱;

          验证refer locator等;

5)使用分布式的多机策略;爬慢点,把爬虫放到访问频繁的主站IP子网下,如教育网;

6)使用了规则来批量爬取,需对规则进行组合;

7)验证码的搞定:机器学习,图像识别;

8)尽可能遵守Robots协议

 

Scrapy是基于Twisted(竞争对手Tornado)异步网络框架,Scrapy的组件及架构图如下:

Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。

Scheduler(调度器): 它负责接受引擎发送过来Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。

Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理。

Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器)。

Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方。

Downloader Middlewares(下载中间件):可以当作是一个可以自定义扩展下载功能的组件。

Spider Middlewares(Spider中间件):可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses; 和从Spider出去的Requests)

代理服务器地址:https://www.kuaidaili.com/ops/

关于Cookie的更详细信息,可以参看: https://www.w3cschool.cn/pegosu/skj81ozt.html

可以引用CookieJar;解决过期问题

估算网站的大小

可以使用搜索引擎来做,比如在百度中使用site:www.zhihu.com

 识别网站用了何种技术

为了更好的了解网站,抓取该网站的信息,我们可以先了解一下该网站大致所使用的技术架构。

安装builtwith :  

Windows: pip install bulitwith

Linux:     sudo pip install builtwith

使用:在Python交互环境下,输入:

import builtwith

builtwith.parse("http://www.sina.com.cn")

寻找网站的所有者

有时候,我们需要知道网站的所有者是谁,这里在技术上有个简单的方法可以参考。

安装python-whois :  

Windows: pip install python-whois

使用:在Python交互环境下,输入:

import whois

whois.whois("http://www.sina.com.cn")

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
,从数据采集、人工标注、模型构建、训练和验证的过程,最终构建形成demo演示 爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值