从网站pull data的时候,就需要做一个爬虫。任何能通过浏览器浏览的内容都可以被抓取。Crawler爬虫、Spider蜘蛛、Scraper采集器三个说的大概都是一个东西,稍有不同。做爬虫需要精通线程、队列、分布式处理。
1)分类
通用爬虫(抓取链接的整个页面)和垂直爬虫(抓取某类网站的指定数据)
*** 一般说的爬虫指的都是垂直爬虫。
2)爬什么
百度、歌曲、电影、图书
百度云盘、BT种子
社交网路(微信、微博、知乎、豆瓣)
股票信息(雪球)
电商信息(天猫、京东)
新闻资讯(腾讯、网易、新浪)
联系人信息(邮件、电话)
等一切想要获取的数据。
*** 更多看知乎上的讨论:
能利用爬虫技术做到哪些很酷很有趣很有用的事情?
3)工作原理
a.给爬虫一个种子URL
b.获取页面内容并存储,抽取页面中的URL
c.将新获取到的URL加入到URL队列中,等待处理
d.从URL队列中获取一个URL然后重复步骤b
4)抓取策略
深度优先策略:先访问子级网页,再访问同级网页。
广度优先策略:先访问同级网页,在访问子级网页。
最佳优先策略:优先访问包含有目标信息的网页。
5)抓取数据源
RSS、API、AJAX、Web(Pagination)
6)数据提起
正则匹配、DOM树(CSS path、XPath)
*** 一般爬虫都会爬取多个网站,所以需要对各个网站的解析规则统一管理。
7)数据去重
不重复抓取同样的URL
shingling算法
simHash算法
MD5 Checksum
8)爬取步骤
Crawling 抓取有用的数据源
Downloading 下载数据源的内容
Scraping 提取有用的数据信息(数据检查)
Extracting 提取数据信息中的数据元素(去重 分类)
Formatting 将数据元素整理成其他系统需要的格式
Exporting 将数据导出到其他系统(存储到数据库或建立索引)
*** 特殊网站的处理:模拟登陆、验证码识别、多网站抓取、JS渲染
9)检测爬虫的方法
User-Agent判断
短时间内同一IP的频繁访问
同一处理的多次执行
Honeypots检测:设置一些人类无法访问的连接
10)发爬虫策略
尽可能遵守robots.txt
限制爬取的速度、深度及页面数
减少并发请求数
伪装UA(动态User-Agent)
使用代理IP (IP Rotation, Proxies,Blacklisting)
不要抓取nofollow display:none 的连接
随机变化抓取模型,不要只执行一个任务
*** 网站认定为爬虫时:出现验证码输入、没有用的信息、HTTP错误
*** 重新进行ADSL拨号,获取新的IP
11)监控
爬虫服务器监控:带宽、CPU、内存、磁盘
爬虫程序的监控:爬虫程序是否正常运行
目标网站的监控:数据源是否可用,数据源结构是否改变
抓取信息的监控:信息是否乱码
12)开源框架
a.框架
Python
Scrapy
https://github.com/scrapy/scrapy
pyspider
https://github.com/binux/pyspider
Java
crawler4j
https://github.com/yasserg/crawler4j
WebMagic
https://github.com/code4craft/webmagic
b.HTTP请求
urlli或HttpURLConnection、HttpClient
c.HTML解析
BeautifulSoup
https://www.crummy.com/software/BeautifulSoup/
jsoup
https://jsoup.org/
d.JS渲染
Selenium
http://www.seleniumhq.org/
PhantomJS
http://phantomjs.org/
e.其他
Elasticsearch、Redis
参考:
https://github.com/lorien/awesome-web-scraping
http://www.cnblogs.com/wawlian/archive/2012/06/18/2553061.html
http://www.lanceyan.com/tech/arch/snscrawler.html
分享到:
相关推荐
案例分析:在提供的压缩包"11-爬虫开发阶段-爬虫基础-MongoDB数据库-爬虫Scrapy框架和案例"中,可能包含实际的Scrapy项目代码和MongoDB使用示例。这些案例可以帮助你更深入地理解如何将Scrapy与MongoDB集成,包括...
本教程旨在帮助初学者掌握Python爬虫的基础知识,包括爬虫的概念、爬虫的工具、爬虫的流程、爬虫的常用库等。此外,本教程还将介绍Python爬虫的一些高级技巧和实践案例,以帮助学习者更深入地了解该领域。 在本教程...
这个压缩包“01-爬虫前导知识(3).zip”很显然聚焦在爬虫技术的基础知识上,这是数据挖掘和互联网数据分析领域的一个关键技能。爬虫,也被称为网络爬虫或网页抓取器,是自动提取网页信息的程序,它通过模拟人类浏览...
本文将基于"01-爬虫_爬虫学习_"这一主题,深入探讨Python语言中的爬虫基础知识,帮助读者理解爬虫的工作原理以及如何在实践中应用。 首先,我们需要了解什么是爬虫。爬虫,又称为网络蜘蛛或网络机器人,是一种自动...
该课程主要分为爬虫基础知识、爬虫技术储备、网络基础等几个部分。 1. 爬虫基础知识 爬虫是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。爬虫可以用于搜索引擎、数据分析、人工智能、薅羊毛、抢车票...
总的来说,"七月在线-爬虫项目班课件全集"是一个全面且系统的Python爬虫教程,不仅覆盖了爬虫开发的基础知识,还注重实战技能的培养。对于想要从事数据挖掘、数据分析或者网络自动化工作的学习者来说,这是一个非常...
爬虫基础知识概览.txt爬虫基础知识概览.txt爬虫基础知识概览.txt爬虫基础知识概览.txt爬虫基础知识概览.txt爬虫基础知识概览.txt爬虫基础知识概览.txt爬虫基础知识概览.txt爬虫基础知识概览.txt爬虫基础知识概览.txt...
本节我们将深入探讨“03爬虫基础知识-数据解析”这一主题,包括数据解析的重要性和常用方法。 一、数据解析的重要性 1. 提取有价值信息:网络上的数据海量且杂乱,通过数据解析可以将有用信息从无结构或半结构化的...
1. **爬虫基础**:介绍爬虫的基本原理和工作流程,包括HTTP/HTTPS协议的理解、URL结构解析、HTML与XML的基础知识,以及网页抓取的基本方法。 2. **Python爬虫框架**:讲解Python中常用的爬虫库,如BeautifulSoup、...
在这个框架中,主要涉及到的知识点包括任务队列、保存队列、请求处理以及结果存储等核心概念。 首先,任务队列是爬虫框架的核心组成部分之一,它主要用于存放待爬取的URL或HTTP请求。当一个爬虫项目启动时,开发者...
总结,51商城的程序使用说明-爬虫主要涵盖了爬虫的基础知识、环境配置、代码编写、反爬策略以及数据处理等多个方面。理解并实践这些步骤,将能有效地从51商城获取并利用所需数据。但请始终确保合法、合规地进行爬虫...
"lesson7-爬虫入门.rar"这个压缩包文件显然是一个关于Python爬虫基础的教程资源,适合初学者学习。 首先,我们要了解什么是网络爬虫。网络爬虫,也叫网页蜘蛛或网络机器人,是一种自动浏览互联网并抓取网页信息的...
### Python 网页爬虫基础知识与实践案例详解 #### 概述 本文将详细介绍一个基础的Python网页爬虫项目的构建过程。此爬虫旨在从指定网站抓取信息,并将其保存为CSV文件格式。我们将使用Python语言,结合`requests`、...
爬虫基础.md爬虫基础知识
首先,我们需要了解Python爬虫的基础知识。Python有许多强大的库用于网络爬虫,如BeautifulSoup、Scrapy、requests等。在这个项目中,我们可能主要会用到requests库来发送HTTP请求获取网页内容,以及BeautifulSoup库...
python爬虫基础知识python爬虫基础知识python爬虫基础知识python爬虫基础知识python爬虫基础知识
学习爬虫不仅需要理解上述基础知识,还需要掌握如何使用浏览器开发者工具查看网络请求,以及如何使用socket编程来实现自定义的网络请求。此外,还需关注反爬虫策略,如验证码、IP限制等,并学习如何应对这些问题,以...
本压缩包文件"python爬虫基础知识及爬虫实例.zip"包含了一份名为"python爬虫基础知识及爬虫实例.py"的源代码文件,旨在帮助初学者理解Python爬虫的基本概念和实践操作。 首先,让我们深入了解Python爬虫的基础知识...
本教程将深入探讨Python的基础语法、Django框架、Flask框架以及爬虫技术,通过实例代码帮助你掌握这些核心知识点。 一、Python基础语法 Python的基础语法包括变量赋值、数据类型(如整型、浮点型、字符串、布尔型、...
这三个实验覆盖了理论知识与实践操作,既锻炼了学生的数学分析能力,也提升了他们的编程和数据处理技能。通过傅里叶变换实验,学生掌握了信号处理的基础;通过采样定律实验,他们理解了数字信号与模拟信号转换的关键...