// 前 言
随着互联网的发展,我们的生活中充斥着各式各样的大数据,就像我们平常登录浏览网页的时候,各式各样的数据让人眼花缭乱。如何从这些网页中提取我们所需要的信息或者批量提取有效的数据呢?此时爬虫就登上了我们的历史舞台,让我们一起揭开爬虫的真面目吧!
01
爬虫的历史及其基本介绍:
定义:网络爬虫,也称为网页抓取和网页数据提取,基本上是指通过超文本传输协议(HTTP)或通过网页浏览器获取万维网上可用的数据。
用处:网络爬虫是一种高效的信息采集利器,利用它可以快速、准确地采集我们想要的各种数据资源。
爬虫历史轴纵览:

爬虫工作原理:

02
关于爬虫不可不知的网页知识
网页基本元素介绍:
以百度首页为例,左侧为官网页面,右侧为网页源代码


三大基本要素:
HTML:
• 定义网页的结构和内容
• HTML是一种超文本标记语言。通过不同类型的标签来描述不同的元素,各种标签通过不同的排列和嵌套形成网页的框架。
• 其语法格式如下:
:<a class=‘xxx’>..</a>
CSS:
• 定义网页的样式
• CSS,全称叫作Cascading Style Sheets,即层叠样式表。“层叠”是指当在HTML中引用了数个样式文件,并且样式发生冲突时,浏览器能依据层叠顺序处理。“样式”指网页中文字大小、颜色、元 素间距、排列等格式。
Javascript:
• 定义网页的行为
• 我们在网页里可能会看到一些交互和动画效果,如下载进度条、提示框、轮播图等, 通常就是JavaScript的功劳。
• 后缀为js,在HTML中通过script标签即可引入
常见标签如图所示:

html常用标签:

网页基本元素介绍——CSS:
• div节点的id为container,那么就可以表示为Container,其中#开头代表选择id,其后紧跟id的名称
• 如果我们想选择class为wrapper的节点便可以使用.wrapper,这里以点(.)开头代表选择class,其后紧跟class的名称。
根据标签名筛选,例如想选择二级标题,直接用h2即可
• 嵌套选择,各个选择器之间加上空格分隔开便可以代表嵌套关系,如#container .wrapper p则代表先选择id为container的节点,然后选中其内部的class为wrapper的节 点,再进一步选中其内部的p节点

Javascript——网页渲染
有时候,我们通过urllib和requests库等抓取到的网页源代码和浏览器中实际上不一样,这是一个非常常见的问题,现在的网页越来越多的使用前端模块化工具来构建,整个页面都可能是通过Javascript渲染出来的,原始的html源代码极有可能是一个空壳,后续我们也会针对这类网页进行爬虫的介绍!(这里做一个简单了解即可)
三者关系:

03
Python爬虫——安装常用库
爬虫步骤:抓取页面——分析页面——存储数据
爬虫涉及到的一些包和库:
爬取网页相关:BeautifulSoup、requests、selenium、urllib
提取信息相关:os、re、time
处理数据相关:csv、pandas、json
四种安装方式:
◕ pip install package(推荐使用)
◕ 在网速较差的情况下可以选择下载wheel文件再安装,然后直接用pip3命令加文件名安装即可
◕ 源码安装,git clone/curl下载
git://github.com/kennethreitz/requests.git –OL
https://github.com/kennethreitz/requests/tarball/master
◕ Pycharm:File—Settings—Project
Interpreter—Avialiable Packages—requests—install
常用库和包的导入:

04
数据存储的三种格式:
1:txt格式:
是最常见的一种文件格式 ,应用广泛,主要存文本信息,即为文字信息,现在的操作系统大多使用记事本等程序保存,大多数软件可以查看,如记事本,浏览器等
在python中存储txt格式:open(文件名,读写模式,编码方式)
• f = open('爬取.txt','w',encoding='utf-8')
• f.write(i.text + '\n') #添加换行符
• f.close()
2:json格式
• 将数据存储为json格式
• 通过对象和数组的组合来表示数据,构造简洁,结构化程度高
• json.loads():将JSON文本转为JSON对象
• json.dumps():将JSON对象转换为JSON文本字符串

3:csv格式:
• 以纯文本格式存储表格数据
• 字段间隔符常为\t或逗号,结构清晰,利于数据的存储与提取
• 常利用pandas包或者csv包进行csv文件的读写
• Import pandas as pd
• file = pd.read_csv(‘xx.csv’) #读取csv文件
• file.to_csv(‘xxx.csv’) #写入csv文件
05
结束语:
本节内容针对爬虫的一些基本原理和网页元素进行了简单的介绍,后续内容敬请期待python爬虫不太冷系列哦!!!(*^_^*)
