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数据进行解析了

posted @ 2018-10-31 14:29  liuge36  阅读(251)  评论(0编辑  收藏  举报