【1】爬虫学习

一直想学爬虫,也是由于种种原因吧,没能系统地学习。正好最近在大工pt上看到了爬虫的系统教程,全下载下来,学习并在博客上记录一下。因为我是一个比较懒的人,对于自动化的技术非常着迷,只要能让机器来做,就不需要用人是我一直以来的执念。所以我对机器学习以及其分支-深度学习,爬虫非常着迷。

本文分为两个部分来写:爬虫简介,爬虫前期准备工作

爬虫简介

爬虫本质上来说是一种按照一定规则,自动地抓取万维网信息的脚本。网络抓取的策略可以分为深度优先、广度优先和最佳优先三种。深度优先在很多情况下会导致trapped的问题。

  • 最佳优先搜索策略

    最佳优先搜索策略按照一定的网页分析算法,预测候选URL与目标网页的相似度,或与主题的相关性,并选取评价最好的一个或几个URL进行抓取。这是一种局部最优的搜索苏凡

爬虫的组成部分:

  • 控制器:主要是负责给多线程中的各个爬虫线程分配工作任务
  • 解析器:主要是下载网页,进行页面处理,将一些JS脚本标签、CSS代码内容、空格字符、HTML标签处理掉
  • 资源库:用来存放下载到的网页资源,一般使用数据库进行存储

爬虫工作的基本流程:

  • 发起请求:通过HTTP库向目标站点发起请求,即发送一个Request,请求包含额外的headers等信息,等待服务器响应。
  • 获取响应内容:如果服务器能正常响应,会得到一个Response,Response的内容就是所要获取的页面内容,类型可能有HTML,JSon字符串,二进制数据(如图片,视频)等类型
  • 解析内容:得到的内容可能是HTML,可以用正则表达式,网页解析库进行解析。可能是JSon,可以直接转为JSon对象解析,可能是二进制数据,可以保存或者进一步处理
  • 保存数据:保存至数据库,或者保存特定格式的文件。

名词解释:

  • Request和Response:

  • 浏览器发送信息给信息给网址所在服务器,这个过程叫做HTTP Request

  • 服务器收到浏览器发送的信息之后,能够根据浏览器发送信息的内容作出相应的处理,然后把消息回传给浏览器,这个过程叫做HTTP Response

  • 浏览器收到服务器的Response信息之后,会对信息进行相应的处理,然后显示

  • Request包含的信息:

  • 请求方式:主要有GET,POST两种类型,另外还有HEAD,DELETE,OPTIONS等

  • 请求URL:URL(统一资源定位符),如一个网页文档,一张图片,一个视频等都可以用URL唯一确定。

  • 请求头:包含请求时的头部信息,如User-Agent,Host,Cookies等信息

  • 请求体:请求额外携带的信息

  • Response包含的信息:

  • 响应状态:有多种响应状态,如200代表成功,301代表跳转,404代表找不到页面,502代表服务器错误

  • 响应头:如内容类型,内容长度,服务器信息,设置Cookie等

  • 响应体:最主要的部分,包含请求资源的内容,如网页HTML,图片二进制数据等

  • 网页解析方式:

  • 直接处理

  • JSon解析

  • 正则表达式

  • BeautifulSoup

  • XPath

  • PyQuery

  • 解决JavaScript渲染问题

  • 分析Ajax请求

  • selenium/WebDriver

  • Splash

  • PyV8,Ghost.py

前期准备工作

主要分为三个部分进行,python的安装,数据库的安装,爬虫常用库的安装

  1. python的安装:采用anaconda进行,anaconda相当于是一个肯德基全家桶,一次性安装python和相关的库

    注意点:

    如果你的电脑里有python2,python3,会面临python冲突的问题。需要将python.exe的名称,然后将其所在文件夹添加到环境变量。

  2. 数据库的安装

  • 非关系型数据库MongoDB安装:

    • 谷歌搜索MongoDB,下载安装MongoDB
    • 在MongoDB根目录下,创建data文件夹,然后在data文件夹里面新建db文件夹
    • 在bin文件夹下,打开命令行,输入’mongod --dbpath bin文件夹’
    • 然后在data文件夹下新建logs文件夹,并在logs文件夹下新建mongo.log文件(这是一个日志文件)
    • 然后在这个logs文件夹下,打开命令行,输入’mongod --bind_ip 0.0.0.0 --logpath log文件的路径(包括文件名) --logappend --dbpath db文件夹 --port 27017 --serviceName “MongoDB” --serviceplayName “MongoDB” --install’
    • 然后可以在计算机管理器中将mongoDB打开
    • 下载Robomongo(这是MongoDB的可视化界面)
  • Redis安装

    • Redis是一个开源的,内存中的数据结构存储系统,可以用来用作数据库、缓存和信息中间件。
    • 在github上下载Redis desktop安装数据库可视化界面
    • 用于维护非关系数据爬取
  • MySQL的安装

  1. 爬虫常用库的安装
  • Requests库详解 { 概 念 : r e q u e s t s 基 于 u r l l i b , 采 用 Apache2 licensed 开 源 协 议 的 H T T P 库 安 装 : pip install requests \begin{cases}概念:requests基于urllib,采用\text{Apache2 licensed}开源协议的HTTP库 \\ 安装:\text{pip install requests} \end{cases} {requestsurllib,Apache2 licensedHTTPpip install requests

  • Scrapy安装详解 { 概 念 : p y t h o n 开 发 的 一 个 快 速 、 高 层 次 的 屏 幕 抓 取 和 w e b 抓 取 框 架 , 用 于 抓 取 w e b 站 点 并 从 页 面 中 提 取 结 构 化 数 据 安 装 : 通 过 a n a c o n d a 进 行 安 装 是 最 方 便 的 : conda install Scrapy \begin{cases}概念:python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化数据 \\ 安装:通过anaconda进行安装是最方便的 :\text{conda install Scrapy} \end{cases} {pythonwebwebanaconda便conda install Scrapy

  • BeautifulSoup安装详解 { 概 念 : 从 网 页 抓 取 数 据 , 可 以 出 来 导 航 , 搜 索 , 修 改 分 树 的 功 能 安 装 : pip install beautifulsoup4 ​ \begin{cases}概念:从网页抓取数据,可以出来导航,搜索,修改分树的功能 \\ 安装:\text{pip install beautifulsoup4} \end{cases}​ {pip install beautifulsoup4

  • Selenium安装详解 { 概 念 : 自 动 化 测 试 工 具 。 如 果 你 在 这 些 浏 览 器 里 面 安 装 一 个 S e l e n i u m 的 插 件 , 那 么 便 可 以 方 便 地 实 现 W e b 界 面 的 测 试 安 装 : pip install selenium \begin{cases}概念:自动化测试工具。如果你在这些浏览器里面安装一个 Selenium 的插件,那么便可以方便地实现Web界面的测试 \\ 安装:\text{pip install selenium} \end{cases} {Selenium便便Webpip install selenium

  • PhantomJs安装详解 { 概 念 : 没 有 界 面 的 浏 览 器 , 可 以 在 后 台 安 静 地 运 行 安 装 : 下 载 p h a n t o m J s , 然 后 解 压 , 将 e x e 文 件 路 径 放 到 环 境 变 量 里 面 \begin{cases}概念:没有界面的浏览器,可以在后台安静地运行 \\ 安装:下载phantomJs,然后解压,将exe文件路径放到环境变量里面 \end{cases} {phantomJsexe

  • lxml安装详解 { 概 念 : 用 于 网 页 解 析 安 装 : pip install lxml \begin{cases}概念:用于网页解析 \\ 安装:\text{pip install lxml}\end{cases} {pip install lxml

  • pymysql安装详解: { 概 念 : 用 于 连 接 m y s q l 安 装 : pip install pymsql \begin{cases}概念:用于连接mysql \\ 安装:\text{pip install pymsql}\end{cases} {mysqlpip install pymsql

  • pymongo安装详解: { 概 念 : 用 于 连 接 m o n g o D B 安 装 : pip install pymongo \begin{cases}概念:用于连接mongoDB \\ 安装:\text{pip install pymongo}\end{cases} {mongoDBpip install pymongo

  • flask安装详解: { 概 念 : P y t h o n 编 写 的 W e b 微 框 架 , 让 我 们 可 以 使 用 P y t h o n 语 言 快 速 实 现 一 个 网 站 或 W e b 服 务 。 安 装 : pip install flask \begin{cases}概念:Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务。 \\ 安装:\text{pip install flask}\end{cases} {PythonWeb使PythonWebpip install flask

  • django安装详解: { 概 念 : D j a n g o 是 应 用 于 W e b 开 发 的 高 级 动 态 语 言 框 架 , 分 布 式 爬 虫 需 要 用 到 安 装 : pip install django \begin{cases}概念:Django 是应用于 Web 开发的高级动态语言框架,分布式爬虫需要用到 \\ 安装:\text{pip install django}\end{cases} {DjangoWeb,pip install django

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值