Python学习记录1——爬虫1

目录

 

零之前言

一.对于爬虫过程的总述:

1.分类:

2.流程:

3.方式:

二.代码解析

三.结尾


零之前言

我也不知道为什么,我Python第一节课一上来就是直接学爬虫2333。

如果你是想要学习或正在学习爬虫,那看懂本学习记录需要的基础知识:Python基础知识、非常基础的HTML知识。

本文是以Bilibili的 av19954075 的教程作为蓝本的一些整理。

一.对于爬虫过程的总述:

1.分类:

对于网络常用的访问方式有GET和POST,而本期教程只适用于GET类型的网页访问,并不能用POST提交数据。

2.流程:

个人总结的流程,并没有视频教程中总结的那么详细,毕竟我觉得,对于我来说这个视频过于的冗长。

流程:爬取网页——下载HTML上的文本信息——格式化文本信息——保存文本信息——继续爬取下一个网页

3.方式:

和易语言的方式差不多,Python使用requests库,易语言使用HTTP访问模块。

Python学习记录1——爬虫1_第1张图片

Python学习记录1——爬虫1_第2张图片

不得不说,易语言在网页访问爬取数据这方面,是能和Python相媲美的,只不过说是Python可以在更多的环境里运行罢了。

易语言有文本处理模块,而视频教程中的Python则是使用了更强大的正则表达式来处理文本。虽然,易语言也能使用正则表达式,但是在其各种取文本的数据操作下,能有更简单的方式来处理数据。

二.代码解析

import requests    #HTTP访问库
import re          #正则表达式
# 将网站地址写入变量中,迭代起来方便
url = "http://www.jingcaiyuedu.com/novel/GLSmM4.html"
# 写入headers模拟浏览器上网,避免出现个别网站拒绝访问的情况。可通过浏览器F12查看
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36",}
#调用GET访问,并获取得到一个response类
response = requests.get(url,headers=headers)
#根据网页选择编码,我也没试过可不可以在里面写其他编码,反正编码类的库,网上也有
response.encoding = 'utf-8'
#辣么,response类里的text就是网页的HTML源代码了,我们可以给他赋值给html
html = response.text

现在html获取出来就像是这个样子的:

Python学习记录1——爬虫1_第3张图片

辣么,我们的获取HTML信息到此就结束了。

接下来是格式化文本,也就是处理文本,提取出有用信息:

#这是一个正则表达式
#返回的可能是个元组可能是个一个字符串,反正注意下标
res = re.findall(r'
',html,re.S)

我们来分析这个正则表达式:

re.findall(r'
',html,re.S)

其中有三个参数:r'任意数据',html,re.S。其分别代表着 替换的标志字段,源文本,替换格式。

其中,替换格式可空,但是可能会丢失很多符号。

而对于任意数据,则是这样来说:

例如,你要寻找 11223344中的2233,那么你的第一个参数因该是这样:r'11(.*?)44',亦或者r'11.*?44'。但是至于括号有什么用,请看一下代码与输出:

import re
str = 'A1122334411332244B'
res = re.findall(r'11.*?44',str)
out = re.findall(r'11(.*?)44',str)
print(res,out)
-------OUT---PUT-------
['11223344', '11332244'] ['2233', '3322']

一目了然,不是吗2333

Python学习记录1——爬虫1_第4张图片

对于正则表达式的介绍,我不必多说,因为,我也没有过多可说,毕竟我也只是个小菜鸡QAQ。

最后是文件的保存,文件类的操作不想怎么说,和C语言都差不多。代码非常固定,复制粘贴就能用,没什么分析的。

Python学习记录1——爬虫1_第5张图片

剩下的就是处理如何迭代,进行下一个网页的爬取了,没啥操作两个字符串合并得到网址而已,说到字符串合并,据说是为了避免字符串里恐怖的+号出现,我们可以用方法b

a = 'EFGH'
b = 'ABCD%s' % a #b优于c
c = 'ABCD' + a
print(b,c)

OUTPUT:ABCDEFGH ABCDEFGH

三.结尾

不要问我,为啥不详细,因为这只是我的学习记录,有些我觉得没必要的东西就没往上写了..

Python学习记录1——爬虫1_第6张图片

你可能感兴趣的:(Python学习记录)