zoukankan      html  css  js  c++  java
  • 【爬虫系列】(一)最简单的爬虫

    首先,什么是爬虫?

    网络蜘蛛(Web spider)也叫网络爬虫(Web crawler)[1],蚂蚁(ant),自动检索工具(automatic indexer),或者(在FOAF软件概念中)网络疾走(WEB scutter),是一种“自动化浏览网络”的程序,或者说是一种网络机器人。它们被广泛用于互联网搜索引擎或其他类似网站,以获取或更新这些网站的内容和检索方式。它们可以自动采集所有其能够访问到的页面内容,以供搜索引擎做进一步处理(分检整理下载的页面),而使得用户能更快的检索到他们需要的信息。(wiki)

    网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。(百度)

    爬虫就是在互联网中爬行的蜘蛛,它会遇到资源、选择资源、抓取资源,这个过程就是爬虫的全部。至于如何找到前进的路,如何选择路线,如何自我保护,如何穿过障碍,这些以后再慢慢说。现在我们先完成最简单的三步走,

    • 访问——通过网站域名获取HTML数据;
    • 分析——根据目标信息解析数据;
    • 存储——存储目标信息。

    访问——如何建立网络连接

    我们平时建立网络连接的方式通常是浏览器,浏览器是面向用户的。它创建信息的数据包,然后发送它们,获取网络的数据,然后解释成直观漂亮的声音、文字、图片、视频。但是,爬虫不需要这些花哨的功能,它只需要获得网络上的资源就可以了。

    我们来看看这个简单的功能通过Python是如何实现的:

    import urllib.request
    response = urllib.request.urlopen('https://www.python.org')
    print(response.read())
    urlopen

    你没有看错,这段代码只有三行,它的运行效果如下:

    这段代码所做的是访问python的官网,获得网站页面的HTML数据,然后输出在控制台。可以看到,我们只是通过很简单的三行代码就得到了一个网页的页面内容。这个页面就是我们的爬虫所要搜寻的资源文件。利用python,很简单地我们就完成了这一步。

    分析——找到我想要的东西

    我们在上一步获得了资源,但是我们拿到的是HTML文件。对于浏览器而言,HTML文件很友好,因为浏览器的渲染是基于此的。对于爬虫来说(或者对于作为幕后黑手的我们来说),这样的资源信息冗余太多了,相当一部分都不是我们想要的内容。Python提供了很多的模块可以用来解析网页,我们这里先用一个最方便的——BeautifulSoup。

    先简单使用一下BeautifulSoup模块,代码如下:

    import urllib.request
    from bs4 import BeautifulSoup
    
    response = urllib.request.urlopen('https://www.zhihu.com')
    bsObj = BeautifulSoup(response.read())
    print(bsObj.h1)

    这段程序的输出结果是

    <h1 class="logo hide-text">知乎</h1>

    也就是知乎网站的标题,我们可以用同样的方法访问网页中的任一结构。

    存储——我的成果需要记录

    我们做爬虫的目的不是为了让它自己去游荡,我们需要的是抓取的数据,所以必须把结果存储下来。常用的存储方式无非就是文件或者数据库方式。文件方式就是存为用户可直接查看的文件,比如文字信息存为文本,图片信息直接保存等等。当数据量很大,而且结构相对固定的时候,数据库就是一个很好的选择。Python也对各类数据库都有相应的支持,非常方便。

    我们这里使用最简单的文本保存方式,如下

    import urllib.request
    from bs4 import BeautifulSoup
    
    response = urllib.request.urlopen('https://www.python.org')
    
    with open('test.txt','w+') as f:
        l = response.read().decode('utf-8')
        print(type(l))
        print(f.writable())
        f.write(l)

    这段程序就是打开一个叫做text.txt的文本文档,然后把我得到的网页数据写进去。效果如下

    到此为止,我们已经知道了如何设计爬虫——访问网络资源,解析数据,存储数据。

    在后面的文章里,我会就这三个方面分别介绍python中的一些实用的库,以及其用法,中间会穿插一些简单的爬虫。

    如果读者是在使用python2.7版本的话,我推荐大家去这个博客学习,这位博主的爬虫系列教程写的很是详细,应该可以帮助到大家。

  • 相关阅读:
    算法
    nginx配置https
    IE中JS跳转丢失referer的问题
    js 调用字符串类型的 js语句
    移动端iOS中input聚焦不灵敏
    上传图片转换格式为base64并预览
    转:手机号脱敏
    转:Lodash之throttle(节流)与debounce(防抖)总结
    转:tinyMCE中图片的自定义上传
    chrome input 输入框去掉黄色
  • 原文地址:https://www.cnblogs.com/GuoYaxiang/p/6160917.html
Copyright © 2011-2022 走看看