`
rensanning
  • 浏览: 3515222 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:37505
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:604415
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:678191
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:87346
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:399876
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:69090
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:90521
社区版块
存档分类
最新评论

基础知识 - 爬虫

 
阅读更多
从网站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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics