网络爬虫_爬(blog.zhuohua.store)

网络爬虫,可以理解为在网络上爬行的一种蜘蛛。互联网就像一张大网,爬虫在这张网上爬来爬去,遇到需要的资源,可以抓取下来。

 

在抓取资源的过程中需要使用URL做资源定位。URL(统一资源定位符)就是平常说的网址,可以从互联网上获取资源的位置。

 

互联网上每个文件都有唯一的URL,URL包含的信息可以指出文件在互联网上的位置。

 

 

 

例子一:

保存通过URL(http://blog.zhuohua.store)获取到的网页源代码和内容:

 

脚本内容:

#coding=utf-8

import urllib.request #内置模块,无需额外安装

 

response = urllib.request.urlopen(“http://blog.zhuohua.store”)

 

Key_1 = response.read().decode(“utf-8″)

 

print(Key_1)

 

 

运行脚本,并把输出结果写入(覆盖)到文件:(脚本所在目录下会生成文件1.txt,文件里会包含网页源代码和内容)

C:\Users\jacky\Desktop>python xx.py > 1.txt

 

C:\Users\jacky\Desktop>

 

 

 

 

 

 

######

 

例子二:

从例子一获取的数据中筛选出此站点的所有分区名称:

 

笺注:

站点(http://blog.zhuohua.store)的分区名称格式,如下:

<h3><a href=”index.php?gid=3″ style=””>CentOS6.9/Redhat6.9</a></h3>

 

<h3><a href=”index.php?gid=59″ style=””>CentOS8/Redhat8</a></h3>

 

<h3><a href=”index.php?gid=11″ style=””>Windows</a></h3>

 

<h3><a href=”index.php?gid=44″ style=””>Virtualization</a></h3>

 

<h3><a href=”index.php?gid=33″ style=””>Python3.6</a></h3>

 

 

脚本内容:

#coding=utf-8

from io import StringIO

String_1 = StringIO()

 

def func1(): #读取文件内容

Path_1 = “./1.txt”

f_name = open(Path_1,’r’)

 

fields_1 = f_name.readlines() #输出结果为列表,包含换行符

f_name.close()

func2(fields_1)

 

def func2(fields_1): #从func1()获得的数据中进行筛选

 

K_1 = “index.php?gid=” #关键字

 

for Key_1 in fields_1:

if K_1 in Key_1:

Result_1 = f”{Key_1.split(‘style=’)[1][3:][:-10]}\n” #以’style=’为分隔符进行分割后,取第二项,然后去掉前面3个字符,再去掉最后10个字符,最后换行

String_1.write(Result_1)

Result_2 = String_1.getvalue()

 

print(“此站点的所有分区名称:”)

print(Result_2)

 

if __name__ == ‘__main__’:

 

func1()

 

 

脚本运行的结果:(结果最后(右边)会多了一个换行符)

C:\Users\jacky\Desktop>python xx.py

此站点的所有分区名称:

CentOS6.9/Redhat6.9

CentOS8/Redhat8

Windows

Virtualization

Python3.6

 

 

C:\Users\jacky\Desktop>

 

 

 

 

 

######

 

例子三:

从例子一获取的数据中筛选出所有分区名称及各自分区下的版块名称:

 

笺注:

其中分区(Python3.6)下的版块名称格式,如下:

<h2><a href=”forumdisplay.php?fid=35″  style=””>安装Python3</a></h2>

 

<h2><a href=”forumdisplay.php?fid=34″  style=””>基础(一)</a></h2>

 

<h2><a href=”forumdisplay.php?fid=39″  style=””>基础(二)</a></h2>

 

<h2><a href=”forumdisplay.php?fid=36″  style=””>运维(一)</a></h2>

 

<h2><a href=”forumdisplay.php?fid=38″  style=””>运维(二)</a></h2>

 

<h2><a href=”forumdisplay.php?fid=40″  style=””>应用</a></h2>

 

 

脚本内容:

#coding=utf-8

from io import StringIO

String_1 = StringIO()

 

def func1(): #读取文件内容

Path_1 = “./1.txt”

f_name = open(Path_1,’r’)

 

fields_1 = f_name.readlines() #输出结果为列表,包含换行符

f_name.close()

func2(fields_1)

 

def func2(fields_1): #从func1()获得的数据中进行筛选

 

K_1 = “index.php?gid=” #分区名称的关键字

K_2 = “forumdisplay.php?fid=” #版块名称的关键字

 

for Key_1 in fields_1:

if K_1 in Key_1:

Result_1 = f”《{Key_1.split(‘style=’)[1][3:][:-10]}》\n”

String_1.write(Result_1)

if K_2 in Key_1:

Result_1 = f”{Key_1.split(‘style=’)[1][3:][:-10]}\n”

String_1.write(Result_1)

Result_2 = String_1.getvalue()

Result_2 = Result_2.rstrip(‘\n’) #去除结果最后(右边)的一个换行符

print(“此站点的所有分区名称及各自分区下的版块名称:”)

print(Result_2)

 

if __name__ == ‘__main__’:

 

func1()

 

 

脚本运行的结果:

C:\Users\jacky\Desktop>python xx.py

此站点的所有分区名称及各自分区下的版块名称:

《CentOS6.9/Redhat6.9》

安全加固

LNMP一键安装包_v1.3

Lamp

Shell

ftp

Nginx反向代理

Nginx+Tomcat+JDK

Oracle Linux6.9

常见服务

《CentOS8/Redhat8》

基础

基础服务

常用服务

Zabbix4.4.5

《Windows》

安全加固

FTP

文件共享

UPUPW

IIS+PHP

Tomcat

MySQL

MSSQL

DHCP & DNS

Windows域

《Virtualization》

VMware ESXi 6.5

CentOS8_KVM

CentOS7.8_KVM

《Python3.6》

安装Python3

基础(一)

基础(二)

运维(一)

运维(二)

应用

 

C:\Users\jacky\Desktop>

 

 

 

 

 

 

 

######

 

例子四:

获取分区(Python3.6)下的版块《安装Python3》下的主题(文章)名称:

 

笺注:

版块《安装Python3》下的主题名称格式,如下:

<span id=”thread_366″><a href=”viewthread.php?tid=366&extra=page%3D1″>CentOS7安装Python3</a></span>

 

<span id=”thread_186″><a href=”viewthread.php?tid=186&extra=page%3D1″>Win10安装Python3</a></span>

 

<span id=”thread_121″><a href=”viewthread.php?tid=121&extra=page%3D1″>Windows2012R2安装Python3</a></span>

 

<span id=”thread_120″><a href=”viewthread.php?tid=120&extra=page%3D1″>Win7/Windows2008R2安装Python3</a></span>

 

<span id=”thread_119″><a href=”viewthread.php?tid=119&extra=page%3D1″>CentOS6安装Python3</a></span>

 

 

脚本内容:

#coding=utf-8

import urllib.request

from io import StringIO

 

def func1(): #获取分区(Python3.6)下的版块《安装Python3》的网页源代码和内容

String_1 = StringIO()

 

url_1 = “http://blog.zhuohua.store/forumdisplay.php?fid=35&page=1” #分区(Python3.6)下的版块《安装Python3》的URL

response = urllib.request.urlopen(url_1)

 

Key_1 = response.read().decode(“utf-8”)

 

String_1.write(Key_1)

String_2 = String_1.getvalue()

func2(String_2)

 

 

def func2(String_2): #把从func1()获得的数据写入(覆盖)文件中

Path_1 = “./2.txt”

f_name = open(Path_1,’w’) #写入(覆盖)文件内容

Result_1 = f_name.write(String_2)

f_name.close()

func3()

 

 

def func3(): #从文件中读取数据,再对数据进行筛选

String_1 = StringIO()

Path_1 = “./2.txt”

f_name = open(Path_1,’r’)

 

fields_1 = f_name.readlines() #输出结果为列表,包含换行符

f_name.close()

 

 

K_1 = ‘id=”thread_’ #关键字

 

for Key_1 in fields_1:

if K_1 in Key_1:

Result_1 = f”{Key_1.split(‘=page%3D1’)[1][2:][:-12]}\n” #以’=page%3D1’为分隔符进行分割后,取第二项,然后去掉前面2个字符,再去掉最后12个字符,最后换行

String_1.write(Result_1)

Result_2 = String_1.getvalue()

Result_2 = Result_2.rstrip(‘\n’) #去除结果最后(右边)的一个换行符

 

print(“分区(Python3.6)下的版块《安装Python3》下的主题名称:”)

print(Result_2)

 

if __name__ == ‘__main__’:

 

func1()

 

 

脚本运行的结果:

C:\Users\jacky\Desktop>python xx.py

分区(Python3.6)下的版块《安装Python3》下的主题名称:

CentOS7安装Python3

Win10安装Python3

Windows2012R2安装Python3

Win7/Windows2008R2安装Python3

CentOS6安装Python3

 

C:\Users\jacky\Desktop>

 

 

《网络爬虫_爬(blog.zhuohua.store)》有1个想法

发表评论

邮箱地址不会被公开。 必填项已用*标注