互联网中包含大量有价值的

数据,网络爬虫通过既定规则可

以自动地抓取互联网数据并下载

至本地存储。研究网络爬虫的工

作原理和基于

Python

网络信息爬

取技术模块功能,基于

Requests-

BeautifulSoup

虫实现网页图片爬取,详细阐述

序的采集、解析、爬取和存储过

程,实验结果证明基于

Python

Requests-BeautifulSoup

快速构建图片爬虫程序实现对网

页图片数据的自动解析和爬取,

程序简单有效并且数据采集速度

快。

联网数据的程序或者脚本。网络爬虫通过网

络请求从

Web

网站首页或指定页面开始解析

网页获取所需内容

,

并通过网页中的链接地址

不断进入到下一个网页

,

直到遍历完这个网

站所有的网页或满足爬虫设定的停止条件为

止。

Python

语言第三方网络请求库

Requests

模拟浏览器自动发送

HTTP/HTTPS

请求并从

互联网获取数据。

BeautifulSoup

解析获取的

HTML/XML

据,

Beautiful Soup

自动将输入文档转换为

Unicode

编码,将输出文档转换为

utf-8

编码,从而节

省编程时间。

1.1 网络爬虫的工作原理

网络爬虫爬取页面就是模拟使用浏览器

获取页面信息的过程,其爬取流程一般包含如

4

个步骤:

(

1

)

求:

URL

向服务器发起

request

请求,请求头

header

一般包含请求类型、

cookie

信息以及浏

览器类型信息等;

(

2

)获取服务器页面响应:在服务器正

常响应的情况下,用户会收到所请求网页的

response

,一般包含

HTML

Json

字符串或其

他二进制格式数据(如视频,图片)等;

(

3

)获取页面内容解析:用相应的解析

器或转换方法处理获取的网页内容,如用网页

解析器解析

HTML

代码,

如果是二进制数据

(如

视频、图片),则保存到文件进一步待处理;

(

4

)存储数据:网页解析获取的数据可

以用

CSV

Json

text

、图片等文件存储,也

可以

sqlite

MySQL

或者

MongoDB

等数据库

存储。

1.2 Python第三方库Requests模块

Requests

Python

,

使

Apache2 Licensed

HTTP

库。

Python

标准库中自带的

urllib2

模块和

httplib

模块提

供了所需要的大多数

HTTP

功能,

Requests

使

urllib3

模块,支持

HTTP

连接保持和连接

池,

支持使用

cookie

保持会话,

支持文件上传,

支持自动确定响应内容的编码,支持国际化的

URL

POST

数据自动编码。

通过

pip

命令(

$pip install requests

)安装

Requests

模块。

urllib

提供了一系列用于操作

URL

的功能,

urllib

request

模块可以方便地

访问抓取

URL(

统一资源定位符

)

内容,

urllib.

request

模块中常用的函数方法如表

1

所示。

使用

requests

方法后,会返回一个

response

象存储服务器响应的内容,

r.status_code

(响

应状态码)、

r.text

(字符串方式的响应体,

会自动根据响应头部的字符编码进行解码)、

r.json

(

Requests

JSON

器)、

r.content

(字节方式的响应体,会自动为你解

gzip

deflate

压缩)等。

1.3 Python第三方库Beautiful Soup模块

Beautiful Soup

Python

HTML/XML

的解析器,它可以处理不规范标

记并生成分析树

(parse tree)

,同时提供了简单

python

函数处理导航(

navigating

)、搜索

并修改分析树。

pip

装(

$ pip install

beautifulsoup4

)

Beautiful Soup

块。

BeautifulSoup

HTML

文档转换成一个树形

结构

,

每个节点都是

Python

的对象

,

所有对象

可归纳为

4

种,如表

2

所示。

2 帖吧图片爬虫程序设计

百度贴吧是全球最大的中文社区。贴吧

是一种基于关键词的主题交流社区,贴吧结合

搜索引擎建立一个在线的交流平台,让那些对

同一个话题感兴趣的人们聚集在一起,方便地

展开交流和互相帮助。设计爬虫程序爬取百度

帖吧(

http://tieba.baidu.com

)内的美图吧图片,

运行爬虫程序时提示用户输入想要爬取网站的

url

,爬虫程序修改请求头信息,模拟浏览器对

贴吧内的帖子依次使用

get

请求,进入帖子后

根据规则找到所有图片标签,获取帖子内的图

片资源

url

,并将其依次下载到本地存储

,

所有

帖子爬取完成后按

enter

退出,运行中途也可

以使用

ctrl+c

强制退出程序。

Python

Requests-BeautifulSoup

术构建图片爬虫程序,使用

requests

模拟浏览

器请求网页,用

random

生成随机数选取模拟

的浏览器,用

BeautifulSoup

支持的

Python

置标准

HTML

解析库解析请求网页返回的数

据,

使

urllib.request.urlretrieve( )

和各种网络请求。

2.1 爬虫准备

使

Python3.6

本,

urllib

requests

块、

BeautifulSoup

模块和

random

模块,模块是包

含变量、函数或类的定义程序文件,使用模块

前通过

import

导入这些模块。定义了两个全

局变量

null

true

并初始化,以避免当访问网

url

中出现

null

true

字样时,

Python

会将

null

true

当成变量未初始化而报错。

import urllib.request

from bs4 import BeautifulSoup

import random

global null   #

设置了两个全局变量

null

true

并初始化

null=''

global true

python如何爬取图片到指定文件夹论文_基于Python的图片爬虫程序设计相关推荐

  1. AWS S3 Windows系统下的文件夹上传基于python

    AWS S3 上传文件,基于cmd命令行发现无法上传文件夹,只能上传单个文件,不知道是我能力不行还是什么原因,如果有大佬了解的可以在下面评论下! 一.环境配置 1.win10 X64: 2.awscl ...

  2. pycharm 怎么快速生成文件夹结构_为什么Python代码能运行但是PyCharm给我画红线?...

    PyCharm在遇到模块找不到时,会使用红色波浪线提醒开发者.这本来是一个非常好的功能,但却由于另外一个问题,会给一些Python初学者造成困扰. 这一篇文章,我们讲讲工作区导致的这个问题. 首先我们 ...

  3. sudo修改文件夹名字_用 Python 高效智能管理文件夹

    #「闪光时刻」主题征文 二期# 大家在写报告.写总结时,是否会先去翻一下以前写过的类似的东西?是否有看过比较好的文章,想保存时却为归类而纠结?是否电脑里的文件越来越多,想删掉一些却又舍不得?身处大数据 ...

  4. matlab添加文件夹语音_基于MATLAB的语音处理

    文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持. 基于MATLAB的语音滤波实验 实验目的: 1.在Matlab环境下对语音的频谱进行处理(数字滤波)并试听效果: 2.在Matlab环境 ...

  5. python关于二手房的课程论文_基于python爬取链家二手房信息代码示例

    基本环境配置 python 3.6 pycharm requests parsel time 相关模块pip安装即可 确定目标网页数据 哦豁,这个价格..................看到都觉得脑阔 ...

  6. 基于python的股票程序化交易论文_基于Python工具的股票量化投资策略研究

    2019 年第 07 期 20 世 纪 80 年代, 一 些 投 资 者 开 始 利用 计 算 机 研究金 融 数据 , 并 初显 成 效 . 20 世 纪 末 , 投 资 者 把 计 算 机 技术 ...

  7. python数字识别kaggle论文_基于Python语言Kaggle的数据集分析

    界 基于 Python 语言 Kaggle 的数 据集 分析 段 聪 聪 柴 世 一 * 渊 河 南 大 学 计 算 机 与 信 息 工 程 学 院 袁 河 南 开 封 475004 冤 揖 摘 要 ...

  8. 基于python的小论文_基于Python的网上论坛的实现

    摘要随着科学技术与计算机网络应用的发展,人们的生活与工作越来越智能化,简洁化,网络化.也就可以腾出更多的时间用来思考周围的事情的合理化与有效话,人们也就更加的想要追求事物的公平公正.在相互讨论与理解的 ...

  9. python动图转换成字符画动图_基于Python实现图画转换字符画

    微信改版,加星标不迷路! 基于Python实现图画转换字符画 作者:阿广 概述 前言 准备工作 识别原理 静态图像处理 动态图像处理 结果 阿广说 群聊交流 福利一刻 推荐阅读 前言 前几天写了基于P ...

最新文章

  1. 19.Linux_Jni多线程操作
  2. 第十五届全国大学生智能车竞赛线上竞赛方案(草案)
  3. 简书markdown支持html,简书上使用Markdown(超详细)
  4. python中的self含义及使用方法
  5. 算法竞赛中的输入输出框架
  6. [课程相关]homework-03
  7. 万物皆可Graph | 当推荐系统遇上图神经网络(三)
  8. 异步 HttpContext.Current 为空null 另一种解决方法
  9. sir模型初始值_SIR 模型笔记
  10. linux usb 从芯片,新人求教,怎么烧录Linux系统到一个小芯片上?
  11. VMware Workstation 与 Device/Credential Guard 不兼容.在禁用 Device/Credenti
  12. php下一页的代码,php 下一页的代码
  13. android edittext禁止输入特殊字符,Android edittext 禁止输入特殊字符/或者表情符的方案...
  14. 如何用自己的电脑作为服务器搭一个网站
  15. ubuntu卸载程序
  16. 【阿里云·云原生架构·白皮书】保姆级解读 一、 云原生架构定义
  17. 搜狗输入法模糊音设置 (非自定义短语设置)
  18. 【Spring之轨迹】结合 @Scheduled 实现定时将 Redis 缓存刷入数据库(配 Redis 工具类与例子实战)
  19. PIC16F877A与Proteus仿真-PIC16F877A最小系统及开发环境搭建
  20. CVPR 2019 论文解读 | 基于多级神经纹理迁移的图像超分辨方法 (Adobe Research)

热门文章

  1. 数据迁移期间进程命令
  2. MySQL之存储过程和函数
  3. (Life)质量和服务_由购买联想笔记本想到的
  4. salesforce 零基础学习(三十四)动态的Custom Label
  5. EXTJS 6 新特性(译文)
  6. 工作中的第一份LoadRunner脚本
  7. Ubuntu 10不能通过改source.list装JDK 1.6
  8. Android 分析监听器上的参数position和id(二)
  9. Java并发线程之线程池
  10. 面对海量请求,缓存设计还应该考虑哪些问题?(转)