Python 网络爬虫 002 (入门) 爬取一个网站之前,要了解的知识
网站站点的背景调研
1. 检查 robots.txt
网站都会定义robots.txt 文件,这个文件就是给 网络爬虫 来了解爬取该网站时存在哪些限制。当然了,这个限制仅仅只是一个建议,你可以遵守,也可以不遵守。但对于一个良好的网民来说,最好还是遵守robots.txt 文件里面的限制。
Q: 如何查看这个 robots.txt 文件?
A: 你只需要在 目标网站站点域名 后面加上 robots.txt 即可。
举例:目标网站站点域名:http://www.aobosir.com/ 。目标网站站点的robots.txt 文件:http://www.aobosir.com/robots.txt 。
# section 1
User-agent: BadCrawler
Disallow: /
# section 2
User-agent: *
Crawl-delay: 5
Disallow: /trap
# section 3
Sitemap: http://aobojaing.github.io/sitemap.xml
Q: robots.txt 文件里面的东西都是什么意思,又有什么用?
A: 一个部分一个部分的讲解:
section 1:
这部分的意思就是:robots.txt 文件禁止那些代理为 BadCrawler 的爬虫访问该网站。 BadCrawler 中文翻译为:恶意爬网程序。
其实这一部分纯粹没用。因为一个恶意爬虫是根本不会代理成:BadCrawler 来访问网站的。你想啊,一个小偷,他会在偷别人东西之前告诉对方,“我是小偷,我要偷你东西了,你做好准备哦!” ?
我们还是尽量遵守robots.txt 文件里面的要求为好。这套专栏后面的博客中,将会展示如何让爬虫自动遵守 robots.txt 文件的要求。
section 2:
不管什么用户,两次爬取请求之间的间隔时间不可以小于 5秒钟。否则你访问的这个网站会将网页自动跳整到 /trap 链接。
就是说:网站服务器封禁了你的IP。我这个网站是封禁你1分钟的时间。一个真实的网站可能会对你的IP封禁更长的时间,如果你行为恶劣,甚至是永久封禁!
section 3:
定义了一个 Sitemap 文件,这个文件就是所谓的 网站地图。我们马上就来介绍这个文件。
2. 检查 网站地图
下面的截图是在 robots.txt 文件中发现的 Sitemap 文件的内容:
网站提供的 Sitemap 文件(即 网站地图),它提供了网站站点里面所有页面的链接。它们组成了这个 Sitemap 文件,现在你应该清楚:为什么叫这个文件为网站地图了吧。
我们无须爬取某个网站站点里面的每一个网页。网站提供的 Sitemap 文件 帮助了我们的网络爬虫定为网站最新的内容。
虽然 Sitemap 文件提供了一种爬取网站的有效方式,但是我们仍需要对其谨慎处理,因为该文件经常存在缺失、过期或者不完整的问题。
3. 估算 网站大小
Q: 为什么要估算 网站大小?
A: 目标网站的大小指的是,这个站点里面有多少个网页。有多少的网页,会影响到我们如何进行爬取。爬取网站上的信息的方式有两种:串行爬取 和 分布式爬取。如果目标网站的网页数量不是很多,只有几百个网页,使用串行爬取就可以。但是如果一个目标网站的网页有几百万个,我们使用串行爬取的话,可能要持续数月才能完成,这个时候,我们就需要分布式爬取的策略来解决这个问题。
所以,在爬取目标网站之前,估算 网站大小 是很有必要的。
Q: 如何估算 网站大小?
A: 估算网站大小的一个简便方法是:检查Google爬虫的爬取结果。
举例:目标网站:http://blog.csdn.net/github_35160620,现在我们要估算这个网站的大小。做法:在google搜索栏里面输入:site:http://blog.csdn.net/github_35160620 ,就可以了。
Google的爬虫估算该网站拥有98个网页,这个数字和事情情况差不多。(实际上,这个http://blog.csdn.net/github_35160620网站里面有101格网页。)
- 我们通过 Google搜索的
site关键词过滤域名结果,从而获取估计的网站大小的信息。- 这个例子估算的结果还算正确。不过对于更大型的网站,我们会发现 Google 的估算并十分准确。
Q: 上不了 Google 网站,怎么办?
A: 告诉你一个方法:无须翻墙,无需任何设置,就可以上谷歌,网速也是相当的快:虫部落 http://so.chongbuluo.com/
4. 识别 网站所用技术
编写中…
5. 寻找 网站所有者
编写中…
Python 网络爬虫 002 (入门) 爬取一个网站之前,要了解的知识的更多相关文章
- python爬虫-基础入门-爬取整个网站《1》
python爬虫-基础入门-爬取整个网站<1> 描述: 使用环境:python2.7.15 ,开发工具:pycharm,现爬取一个网站页面(http://www.baidu.com)所有数 ...
- python爬虫-基础入门-爬取整个网站《3》
python爬虫-基础入门-爬取整个网站<3> 描述: 前两章粗略的讲述了python2.python3爬取整个网站,这章节简单的记录一下python2.python3的区别 python ...
- python爬虫-基础入门-爬取整个网站《2》
python爬虫-基础入门-爬取整个网站<2> 描述: 开场白已在<python爬虫-基础入门-爬取整个网站<1>>中描述过了,这里不在描述,只附上 python3 ...
- Python网络爬虫与如何爬取段子的项目实例
一.网络爬虫 Python爬虫开发工程师,从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页 ...
- 【Python网络爬虫三】 爬取网页新闻
学弟又一个自然语言处理的项目,需要在网上爬一些文章,然后进行分词,刚好牛客这周的是从一个html中找到正文,就实践了一下.写了一个爬门户网站新闻的程序 需求: 从门户网站爬取新闻,将新闻标题,作者,时 ...
- python网络爬虫之四简单爬取豆瓣图书项目
一.爬虫项目一: 豆瓣图书网站图书的爬取: import requests import re content = requests.get("https://book.douban.com ...
- Python 网络爬虫实战:爬取 B站《全职高手》20万条评论数据
本周我们的目标是:B站(哔哩哔哩弹幕网 https://www.bilibili.com )视频评论数据. 我们都知道,B站有很多号称“镇站之宝”的视频,拥有着数量极其恐怖的评论和弹幕.所以这次我们的 ...
- 精通python网络爬虫之自动爬取网页的爬虫 代码记录
items的编写 # -*- coding: utf-8 -*- # Define here the models for your scraped items # # See documentati ...
- Python 网络爬虫 005 (编程) 如何编写一个可以 下载(或叫:爬取)一个网页 的网络爬虫
如何编写一个可以 下载(或叫:爬取)一个网页 的网络爬虫 使用的系统:Windows 10 64位 Python 语言版本:Python 2.7.10 V 使用的编程 Python 的集成开发环境:P ...
随机推荐
- 16-THREE.JS 半球光
<!DOCTYPE html> <html> <head> <title></title> <script src="htt ...
- 利用HTML5开发Android笔记(上篇)
资源来自于www.mhtml5.com 杨丰盛老师成都场的PPT分享 一个很简明的demo 可以作为入门基础 学习的过程中做了点笔记 整理如下 虽然内容比较简单 但是数量还是比较多的 所以分了3篇 ( ...
- mysql定时任务备份bat命令-记录一下待日后使用
最近有个任务,需要每日备份数据库到某个磁盘,使用window定时任务调用bat文件实现. %Date:~0,2%获取星期几,这个要根据系统进行尝试, 有 星期几 7/25/2018 有 2018/ ...
- UVA 11605 Lights inside a 3d Grid
#include <iostream> #include <stdio.h> #include <cstring> #include <math.h> ...
- grep---Linux下文本处理五大神器之五
转自:http://www.cnblogs.com/dong008259/archive/2011/12/12/2285264.html grep是linux中很常用的一个命令,主要功能就是进行字符串 ...
- python2.7 爬取简书30日热门专题文章之简单分析_20170207
昨天在简书上写了用Scrapy抓取简书30日热门文章,对scrapy是刚接触,跨页面抓取以及在pipelines里调用settings,连接mysql等还不是很熟悉,今天依旧以单独的py文件区去抓取数 ...
- css3 flex布局/grid布局
1.CSS3 Flexbox 布局完全指南(图解 Flexbox 布局详细教程) 2.CSS Grid 布局完全指南(图解 Grid 详细教程)
- unity 查看打包资源占用
想要压缩包大小,首先得知道打包出来的各个资源的大小,明确知道哪些资源占用大,可以通过如下操作打开Editor.log(可能需要先输出一遍安卓包) 1.在Unity Console界面右上角点开Open ...
- 在.net中读写config文件的各种方法(自定义config节点)
http://www.cnblogs.com/fish-li/archive/2011/12/18/2292037.html 阅读目录 开始 config文件 - 自定义配置节点 config文件 - ...
- CAS单点登录系统简介
一.cas简介 全名:Central Authentication Service特点: 1.开源的.多协议的 SSO 解决方案: Protocols : Custom Protocol . CAS ...