鱼C论坛

 找回密码
 立即注册
查看: 3651|回复: 17

[技术交流] python爬虫进阶关于robotx.txt

[复制链接]
发表于 2017-7-4 15:50:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 MSK 于 2017-7-9 23:01 编辑

1.懂得约束自己的行为



无论如何,当你爬取一个网站的数据时,请记住自己是该网站的访客,应当约束自己的行为,否则对方可能封禁你的IP,甚至采取法律行动。

        检查robots.txt

        大多数网站都会定义robots.txt,让爬虫爬取时了解需要遵守哪些限制(对恶意爬虫好像没什么卵用,但是作为一个良好的网络公民应该遵守这些规则 )

        百度的robots.txt的一部分
(www.baidu.com/robots.txt)
  1. User-agent: EasouSpider
  2. Disallow: /baidu
  3. Disallow: /s?
  4. Disallow: /shifen/
  5. Disallow: /homepage/
  6. Disallow: /cpro
  7. Disallow: /ulink?
  8. Disallow: /link?

  9. User-agent: *
  10. Disallow: /
复制代码




        其中规定了禁止用户代理为 EasouSpider的爬虫爬取的链接,也规定了无论哪种用户,都禁止爬取网站(尽管自身就是一个爬虫业务
       
        在有的robots.txt中还会定义sitemap(网站地图)文件,它提供了一个网页的所有链接

       
       
游客,如果您要查看本帖隐藏内容请回复


2.估算网站大小



        目标网站的大小会影响我们如何爬取
        一个简便的方法:检查Baidu爬虫的结果,Baidu爬虫可能已经爬过我们感兴趣的网页


        方法:在浏览器地址栏输入:site: 网址

       

                               
登录/注册后可看大图

       
游客,如果您要查看本帖隐藏内容请回复


3.查询网站所有者



        www.whois.org可以获取到相关网站的信息
       

                               
登录/注册后可看大图



4.下载网页



        使用urllib库来下载网页
  1. from urllib.request import *

  2. def download(url):
  3.     html = urlopen(url).read()
  4.    
  5. doenload('http://www.baidu.com')
  6. #下载网页并返回其html
复制代码

        但是下载网页时,总会遇到一些无法控制的错误,比如请求的资源不存在的404错误,还有傲娇的403错误
        推荐阅读:http状态码大全
       

        [size=3]重试下载
        有的错误是临时性的,如5xx 类错误发生在服务端出现问题时
        所以当发生5xx错误时,只需重试下载即可

       
  1. import urllib.request
  2. import urllib.error

  3. def download(url,try_again=2):
  4.     try:
  5.         print('downloading %s...' % url)
  6.         html = urllib.request.urlopen(url).read()
  7.     except urllib.error.URLError as e:
  8.         html = None
  9.         print(e.reason)
  10.         if try_again > 0:
  11.             if hasattr(e,'code') and 500 <= e.code < 600:
  12.                 print('下载失败,正在重试下载...')
  13.                 return download(url,try_again - 1)
  14.     return html
  15.    
  16. url = input('input url please:')
  17. download(url)
复制代码
       


5.自动检查robots.txt文件,避免爬取禁止的链接



        使用urllib.robotparser
       
  1. import urllib.robotparser
  2. rp = urllib.robotparser.RobotFileParser()
  3. rp.set_url('http://www.baidu.com/robots.txt')
  4. rp.read()
  5. user_agent = 'python3.6.1'
  6. url = 'https://baike.baidu.com/'
  7. #返回一个bool值,意思是是否能爬取
  8. rp.can_fetch(user_agent,url)
复制代码




因为scrapy目前已经支持python3 本系列使用语言均为 python3
       
       

评分

参与人数 1鱼币 +3 收起 理由
小甲鱼 + 3

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-7-10 13:11:54 | 显示全部楼层
本帖最后由 MSK 于 2017-7-10 13:15 编辑
~风介~ 发表于 2017-7-9 23:57
为了验证是否属实,哥们用虚拟机在Python3.X装Scrapy试试?顺便出一个教程呗~


经过在win7 64bit虚拟机上测试,scrapy能够成功安装!
@小甲鱼 @~风介~
temp4.PNG
turtle_看图王.png

评分

参与人数 1荣誉 +3 鱼币 +5 收起 理由
~风介~ + 3 + 5 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-9 23:25:46 | 显示全部楼层
Python3.X对Scrapy的支持是建立在已经安装VS或MinGW的基础上,所以一键安装是木有意义的。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-9 23:52:38 | 显示全部楼层
~风介~ 发表于 2017-7-9 23:25
Python3.X对Scrapy的支持是建立在已经安装VS或MinGW的基础上,所以一键安装是木有意义的。。。

不知道,我安装时就调用了这几句命令,所以。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-9 23:57:32 | 显示全部楼层
MSK 发表于 2017-7-9 23:52
不知道,我安装时就调用了这几句命令,所以。。。

为了验证是否属实,哥们用虚拟机在Python3.X装Scrapy试试?顺便出一个教程呗~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-10 09:52:18 | 显示全部楼层
~风介~ 发表于 2017-7-9 23:57
为了验证是否属实,哥们用虚拟机在Python3.X装Scrapy试试?顺便出一个教程呗~

okok,等我重新装台虚拟机试试,虚拟机一开机就崩溃,昨晚弄了一晚上
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-10 15:52:27 | 显示全部楼层
~风介~ 发表于 2017-7-9 23:25
Python3.X对Scrapy的支持是建立在已经安装VS或MinGW的基础上,所以一键安装是木有意义的。。。

支持Python3就很知足了~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-10 16:56:59 | 显示全部楼层
小甲鱼 发表于 2017-7-10 15:52
支持Python3就很知足了~~~

简直是普大喜奔来着~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-30 13:27:21 | 显示全部楼层
图片挂了。重新补一下啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-30 20:35:26 | 显示全部楼层
学习下robots规则
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-30 21:06:48 | 显示全部楼层
妙啊秒啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-17 20:03:46 | 显示全部楼层
回帖。。。。。。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-9-17 21:04:31 | 显示全部楼层
学习一下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-27 12:02:10 | 显示全部楼层
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-9-28 14:38:20 | 显示全部楼层
看看~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-2 00:41:33 | 显示全部楼层
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-2 10:45:17 | 显示全部楼层
?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-7 20:39:00 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 13:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表