zoukankan      html  css  js  c++  java
  • 爬虫背景调研----用python编写网络爬虫(一)

    前言

    在爬取一个网站内容之前,我么最好一下准备,这样会让我们更好的去思考要采取如何的一种方式来对网站的内容进行爬取。
     
    正文

    • 检查robots.txt
    里面详细介绍该网站的哪些数据是可以爬取的,哪些是不可以爬取的。同时检查robots.txt可以最小化怕从被禁封的可能。关于robots.tx协议的更多信息可以参见
    http://robotstxt.org
    • 检查网站地图
    网站提供的Sitemap文件可以帮助爬虫定位网站最新内容,而无需爬取每一个网页,Sitemap链接可以在robots.txt中找到。虽然男男女女sitemap文件提供了一种爬取网站的有效方式,但是经常存在缺失、过期或不完整的问题。想了解更多的信息可以访问以下链接
    http://www.sitemaps.org/protcol.html
    例如访问豆瓣的robots.txt
     
    • 估算网站大小
    估算网站大小的一个简便方法是检查Google爬虫的结果。听过访问一下玩个可以了解到该接口及其他高级搜索参数的用法
    https://www.google.com/advanced_search
     这里我们对网站进行搜索的话,直接搜
    site:xxxx.xxx.xxx
    • 识别网站所有技术
    buildwith模块
    <span data-wiz-span="data-wiz-span" style="font-size: 0.667rem;">builtwith.parse('example.webscraping.com')</span>
     
    然后会返回
    <span data-wiz-span="data-wiz-span" style="font-size: 0.667rem;">{'web-servers': ['Nginx'], 'web-frameworks': ['Web2py', 'Twitter Bootstrap'], 'programming-languages': ['Python'], 'javascript-frameworks': ['jQuery', 'Modernizr', 'jQuery UI']}</span>
     
    这里值得一说的是,builtwith模块是不支持python2.0以上的版本,但是这并不是一个问题,跟着它报错的地方来进行修改后,builwith模块就可以使用了。下面提出要修改的地方
      • except Expection,e错误
    将代码
    <span data-wiz-span="data-wiz-span" style="font-size: 0.667rem;">except Expection , e:</span>
     
    修改为
    <span data-wiz-span="data-wiz-span" style="font-size: 0.667rem;">except Expection as e:</span>
     
      • print 错误
    给每个输出的内容,都添加上括号
      •     TypeError
    在代码
    <span data-wiz-span="data-wiz-span" style="font-size: 0.667rem;">if html is None:
        html = response.read()</span>
     
    后面添加下面一句
    <span data-wiz-span="data-wiz-span" style="font-size: 0.667rem;">html = html.decode('gbk')  #或者 html = html.decde('utf-8')</span>
     
    • 寻找网站所有者
    在我们知道已知网站的所有者会禁封网络爬虫,那么我们最好将下载速度控制的更加保守一些。可以通过一下代码来获取网站的所有者
    import whois
    print (whois.whois('appspot.com'))
     

    <wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">





  • 相关阅读:
    request和response使用
    oracle_to_char
    oracl_LTRIM_RITRIM
    convert
    jdbc
    oracle_trunc
    [python]glob模块中的glob()函数为什么返回空列表??
    win10 anaconda+tensorflow+keras
    Golang学习:sublime text3配置golang环境
    2018/12/05学习笔记
  • 原文地址:https://www.cnblogs.com/kangxiaopao/p/7448819.html
Copyright © 2011-2022 走看看