zoukankan      html  css  js  c++  java
  • Python爬虫入门

    写在前面

    学习爬虫也很久了,但是一直没有整理自己的笔记,然后,今天整理的是慕课网疯狂的蚂蚁crazyant 老师的《Python开发简单爬虫》这门课程的内容,大家也可以关注一下这位老师,讲得很不错,这边文章中也加上了自己的一些见解,如有错误,告诉我一下,谢谢

    什么是爬虫

    从百度词条中,我们可以知道,爬虫是一段自动抓取万维网信息的程序.通过爬虫我们可以爬取URL,获取我们想要的数据信息

    爬虫分类

    我这里就简单从复杂程度来分类了

    1.简单爬虫[本次讲解的]

    特点:不需要登录,直接可以爬取的静态网页

    2.复杂爬虫

    特点:
    1.需要登录才能获取数据,
    2.页面数据通过Ajax异步渲染得到的页面

    爬虫架构

    架构这个东西,是一开始心里得有个底的,我们需要了解爬虫的整个执行流程
    这里写图片描述

    上面就是包括了爬虫程序的5个主要部分
    我们来看看动态运行流程
    这里写图片描述
    简单说明:
    1.调度器首先询问URL管理器是否有待爬取的url,

    2.如果有,就从URL管理器中获取一个待爬取的URL交给下载器进行下载,

    3.下载器下载完,将数据返回给调度器

    4.调度器将下载下来的数据发给解析器进行解析,解析器解析价值数据和新的URL列表

    5.调度器将价值数据进行收集,并且将新解析出来的url列表发给URL管理器

    这样一直循环,一直到URL管理器中没有待爬取的url,才会停止

    URL管理器介绍

    1. 什么是URL管理器

    顾名思义,这个当然是管理的url地址的
    为了防止重复抓取,循环抓取,这个URL地址必须包含两个部分
    1.待爬取的URL列表
    2.已经爬取过的URL列表

    简单说明:
    1.一开始,待爬取URL列表中有一个起始的URL,爬取过的URL列表为空

    2.爬取起始的URL,会得到价值数据和新得URL列表,并将起始URL放到爬取过的URL列表中

    3.将新的URL列表保存在待爬取列表中(保存之前,会先判断待爬取列表中是否已经存在,[这样保证了不会重复]),供调度器使用

    2.URL管理器实现方式

    这里写图片描述

    网页下载器介绍

    调度器将待爬取的URL交给下载器进行下载,下载得到html文件,并将文件保存到本地

    下载器分类

    第一类:Urllib2(Python官方基础模块)
    1.支持直接静态网页下载
    2.或者需要向网页提交一些需要用户输入的数据
    3.支持需要用户登录访问的cookie处理
    4.需要代理访问的代理处理

    第二类requests是一个第三方的库[其实更加强大]

    开始介绍urllib2

    urllib2网页下载器下载网页的方法

    方式一:直接将需要下载的url传送给urllib2.urlopen()方法

    import urllib2# python2
    from urllib import request #python3
    #直接请求
    response = urllib2.urlopen('http://www.baidu.com')# python2
    response2 = urllib2.urlopen('http://www.baidu.com')# python3
    # 获取状态码,200表示成功
    print("方式一")
    print (response.getcode())
    
    # 读取内容文本
    cont = response.read()

    方式二:添加data.header等信息到urllib2.request类,,生成一个request对象才能够

    #方式二:创建Request对象
    request_ = request.Request(baidu)
    #添加请求头
    request_.add_header('User-Agent','Mozilla/5.0')
    #发送请求
    response2 = request.urlopen(request_)
    print("方式二")
    print(response2.getcode())

    网页解析器

    这里写图片描述

    常用的网页解析器有:

    正则表达式:将整个文档当做一个字符串 使用模糊匹配的方式提取出有价值的数据
    适用于简单文档

    Html.parser:这个是python自带模块的

    BeautifulSoup:这个第三方的插件

    Lxml:第三方插件解析html或者xml

    ps:BeautifulSoup
    可以使用Html.parser作为解析器
    也可以使用lxml作为解析器

    Beautiful Soup操作流程

    [查看官网]
    https://www.crummy.com/software/BeautifulSoup/bs4/doc/#quick-start
    步骤一:引入包

    from bs4 import BeautifulSoup

    步骤二:创建Beautiful Soup对象

    soup = BeautifulSoup(html_doc, ‘html.parser’,from_encoding=’utf8’)

    接着,就可以使用soup这个对象对html数据进行解析了

  • 相关阅读:
    win7跨网段加域提示"找不到网络路径",解决后又提示"将该计算机的主域DNS更改为“”失败,名称仍然为xx.xx, 错误为“指定的服务器无法运行请求的操作”!
    XP原版系统激活
    使用SQLyog远程连接mysql,错误1130 解决方法
    激活Windows Server 2008 R2 Enterprise 方法
    Non-UTF-8 code starting with 'xff'解决,记录
    Linux 中,基础命令 command not found...问题
    winxp_sp3未激活的登录问题
    linux安装tomcat
    Notepad++ 配置python
    python idle 清屏问题的解决
  • 原文地址:https://www.cnblogs.com/liuge36/p/12614813.html
Copyright © 2011-2022 走看看