Python爬虫的道德规范---robots协议

编写爬虫程序爬取数据之前,为了避免某些有版权的数据后期带来的诸多法律问题,

可以通过查看网站的robots.txt文件来避免爬取某些网页。

robots协议,告知爬虫等搜索引擎那些页面可以抓取,哪些不能。它只是一个通行的道德规范,

没有强制性规定,完全由个人意愿遵守。作为一名有道德的技术人员,遵守robots协议,

有助于建立更好的互联网环境。

网站的robots文件地址通常为网页主页后加robots.txt,如 www.taobao.com/robots.txt

一个简单判断用户代理是否符合robots文件规定的小程序,符合条件即下载网页:

import robotparser
import urllib2
def download(url, user_agent=‘wswp‘, num_retries=2):
    print ‘Downloading:‘, url
    headers = {‘User-agent‘: user_agent}
    request = urllib2.Request(url, headers=headers)
    try:
        html = urllib2.urlopen(request).read()
    except urllib2.URLError as e:
        print ‘Download error:‘, e.reason
        html = None
        if num_retries > 0:
           if hasattr(e, ‘code‘) and 500 <= e.code < 600:
               return download(url,num_retries-1)
    return html
def can_be_download(url, user_agent=‘wswp)            #设置一个默认的用户代理
    rp = robotparser.RobotFileParser()
    url = url.split(‘/‘)[2]                #获取主页网址
    rp.set_url(‘http://‘ + str(url) + ‘/robots.txt‘)  #robots.txt地址
    rp.read()
    if rp.can_fetch(user_agent=‘wswp‘, url):
        download(url)
时间: 2024-11-08 17:59:53

Python爬虫的道德规范---robots协议的相关文章

Python爬虫最为核心的HTTP协议解析,及自定义协议的分析!

机器之间的协议就是机器通信的语法,只有按照这种语法发来的信息,机器之间才能相互理解内容,也可以理解为信息的一种格式. HTTP/IP协议是互联网最为重要的协议,没有HTTP/IP协议,也就没有互联跟不会有网,对于爬虫而言一切数据.请求都是围绕HTTP协议展开.但是在python实现的网络爬虫中都是使用封装好了的请求库如:requests.scrapy.urllib等,这些是对socket的封装,而socket是除了机器语言外最底层的协议. HTTP是公认的协议,但是并不是所有的终端通信都使用HT

Python 爬虫|深入请求:http协议以及fiddler的使用

对于一个URL https://zhuanlan.zhihu.com/xmucpp (1)首先浏览器解析出主机名:http://zhuanlan.zhihu.com (2)浏览器搜索出相应主机的ip地址(DNS) (3)浏览器解析出相应的端口号 (4)建立与主机及特定端口的联系 (5)发送请求报文(记录请求行为的一些信息及要求) (6)获得响应报文(包括你在浏览器上看到的信息) (7)关闭连接 现在来看一看报文的具体结构,对于构造请求行为中的headers很有帮助,只需要大概了解就好,不需要特别

Python 爬虫-Robots协议

2017-07-25 21:08:16 一.网络爬虫的规模 二.网络爬虫的限制 ? 来源审查:判断User‐Agent进行限制 检查来访HTTP协议头的User‐Agent域,只响应浏览器或友好爬虫的访问? 发布公告:Robots协议 告知所有爬虫网站的爬取策略,要求爬虫遵守 三.Robots 协议 作用:网站告知网络爬虫哪些页面可以抓取,哪些不行形式:在网站根目录下的robots.txt文件 如果网站不提供Robots协议则表示该网站允许任意爬虫爬取任意次数. 类人类行为原则上可以不遵守Rob

Python爬虫(学习准备)

编码格式的认识: 字符:各种文字和符号的统称 字符集:多个字符的集合 字符集包括:ASCII字符集,GB2312字符集,GB18030,Unicode字符集等 1个字符ASCII编码占1个字节,用Unicode编码占2个字节 UTF-8是Unicode的实习方式之一,是一种变长的编码方式,可以是1,2,3个字节等 在Python中字符串分为两种类型: bytes:二进制,互联网上数据都是以二进制传输 str:unicode的呈现方式 str与bytes的转换: encode() #str->by

python爬虫学习第三章

html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption

python3 爬虫5--分析Robots协议

1Robots协议 Robots协议告诉了搜索引擎和爬虫那些页面可以抓取,那些不可以,通常是存放在robots.txt文件里面,位于网站的根目录下 robots.txt中内容的示范: User-agent:* //表示了搜索爬虫的名称,*表示对任何爬虫都有效 Disallow:/ //表示了不允许抓取的目录,/表示不允许抓取所有目录,没有写就代表允许抓取所有的目录 Allow:/public/ //表示在排除Disallow中,可以抓取的目录 2robotparse robotparse就是用来

查看 搜索引擎的robots协议 及其他 爬虫基础-2

1.网络爬虫:抓取网络数据的程序用python程序模仿人去访问网站,逼真度越真越好可以用来爬取有价值的数据 2.企业获取数据的方式 1 自有数据 比如 自家职员信息表格等 2 第三方数据平台购买 数据堂.贵阳大数据交易所 3 爬虫爬取数据 3.其他语言也可以做爬虫如PHP,JAVA,C.C++ 4.爬虫分类 1.通用网络爬虫 搜索引擎使用,需要遵守 robots协议. 如何查看一个搜索引擎的robots协议? 输入 网站/robots.txt,如:www.baidu.com/robots.txt

Python3网络爬虫实战-23、使用Urllib:分析Robots协议

利用 Urllib 的 robotparser 模块我们可以实现网站 Robots 协议的分析,本节我们来简单了解一下它的用法. 1. Robots协议 Robots 协议也被称作爬虫协议.机器人协议,它的全名叫做网络爬虫排除标准(Robots Exclusion Protocol),用来告诉爬虫和搜索引擎哪些页面可以抓取,哪些不可以抓取.它通常是一个叫做 robots.txt 的文本文件,放在网站的根目录下. 当搜索爬虫访问一个站点时,它首先会检查下这个站点根目录下是否存在 robots.tx

爬虫基础 - Robots协议

Robots协议 指定一个robots.txt文件,告诉爬虫引擎怎么爬取 https://www.taobao.com/robots.txt User-agent: Baiduspider Allow: /article Allow: /oshtml Allow: /ershou Allow: /$ Disallow: /product/ Disallow: / User-Agent: Googlebot Allow: /article Allow: /oshtml Allow: /produc