python爬虫学习进程(二)

前言

大家好,之前大体的总结了什么是爬虫,以及爬虫的基本过程。然后,就可以选择爬虫的方式进行数据的获取。

爬虫的原则

爬虫是一种获取数据的技术手段和方式。我们在使用爬虫的时候,不管是自己开发的还是使用的别人的成果,一定要有一个良好的隐藏自己的习惯。现在很多的网站都有自己的Robots协议,通过这个Robots协议来限制爬虫的范围,但是,‘盗亦有道’,反爬和反反爬,都是一个需求的迫切程度决定的。我自己的原则就是,爬虫来的东西,不可进行商业用途,真正做到‘盗亦有道’。

什么是Robots协议: Robots

网页的组成

网页可以分为三大部分一一HTML、CSS、JavaScript。如果把网页比作一个人的话,HTML相当于骨架,JavaScript当于肌肉,css相当于皮肤,三者结合起来才能形成一个完善的网页。
1、HTML:HTML是用来描述网页的一种语言,其全称叫作 Hype Text Markup Language,即超文本标记语言。网页包括文字、按钮、图片和视频等各种复杂的元素,其基础架构 就是HTML。不同类型的文字通过不同类型的标签来表示,如图片用img标签表示。
2、CSS:全称叫作 Cascading Style Sheets,即层叠样式表’层叠’是指当在 HTML中引用了数个样式文件,并且样式发生冲突时,浏览器能依据层叠顺序处理’样式’指网页中文字大小、颜色 、元素间距、排列等格式。
3、JavaScript:简称 JS 是一种脚本语言。我们在网页里可能会看到 些交互和动画效果,如下载进度条、提示框 轮播图等。这通常就是 JavaScript 的功劳。

比如如下的内容就是一个网页的源代码。可以看到,在html的框架中,包含js,css。

<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<title>地图</title>
<style type="text/css">
html, body, #map-canvas {
	height: 100%;
	margin: 0px;
	padding: 0px;
}
</style>
<link href="//f.7x24s.com/public/leaflet-1.4.0/leaflet.css" rel="stylesheet" type="text/css" />
<script src="//f.7x24s.com/public/leaflet-1.4.0/leaflet.js"></script>
<script src="//f.51240.com/img/js/js.js?v=19021216"></script>
<script src="//f.51240.com/file/map/lib.js"></script>
<script src="//f.51240.com/file/map/layer/layer.js"></script>
<script src="//f.51240.com/file/map/js.js?v=19021216"></script>
</head>

<body>

<script>layer.load(3, 0);</script>

<div id="map-canvas"></div>
<script>_google_();</script>

</body>
</html>

爬虫的基本原理:
1.获取网页:这部分工作就是获取网页源代码,源代码里面包含了网页的部分有效信息。
2.提取信息:分析网页源代码,通用的是正则表达式。
3.保存数据:简单保存,或者保存到数据库。
4.自动化程序:进行各种异常处理,错误重试等操作

抓取操作

我用的是windows系统anaconda3+spyder的中python=3.5进行的所有过程的实现。以及后续python库的安装。
anaconda3的安装,现在的官网anaconda中自带的是python3.7,个人感觉3.5版本是相对稳定的,所以如果在3.7中运行文中代码有错误,可以降版本到python3.5。
降版本的操作可以在spyder中直接进行,其中的spyder,jupyter,版本都要与之对应。

下载之后按顺序安装就可以了
在这里插入图片描述
安装完成后的python
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

python库

通过python进行爬虫,我们需要用到一些列的库,python之所以方便,是因为它将很多复杂的东西进行封装,这样我们就可以简单的通过调用它的库来实现我们的功能。

对于爬虫来讲,我们首先需要的是请求库。
请求库
进行第一部分(获取网页)
1.urllib库:
request:请求处理模块
parse:URL 处理模块
error:异常处理模块
robotparser:robots.txt 解析模块
2.requests库

在这里插入图片描述
3.Selenium库
在这里有一个正则表达式的方法,这是一个很强大的方法,不过初学者接触起来比较复杂,但是,熟能生巧,不断的练习就可以慢慢的掌握这个方法,进行匹配我们所抓取的内容。

如何解决js渲染的问题?

分析ajax
Selenium/webdriver
Splash
PyV8,Ghost.py

解析库
进行第二部分(提取信息)
1.XPath库
2.Beautiful Soup库
3.pyquery库
数据存储
进行第三部分(保存数据)
1.文件存储:
–TXT 文本存储
–Json 文件存储
–CSV 文件存储

2.关系型数据库存储:关系型数据库有多种,如 QLite、MySQL、Oracle、SQL Server 、DB2等。

3.非关系型数据库存储:MongoDB 存储、Redis 存储。

形成框架
第四部分的完成,才可以真正的进行系统或者规模化的爬虫。

def getHTMLText(obj):
    try:
        kv={'user-agent':'Mozilla/5.0'}
        r=requests.get(url,headers=kv)
        r.raise_for_status()
        r.encoding=r.apparent_encoding
        print(r.request.headers)
        return r.text
    except:
        return"产生异常"
if __name__== '__main__':
    url="输入你的url"
    print(getHTMLText(url)) 

这是一个 简单的框架结构,自己可以尝试一下,我们下次见了咯。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

齐齐大魔王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值