python实操之网络爬虫介绍

一、什么是网络爬虫

网络爬虫,也可以叫做网络数据采集更容易理解。它是指通过编程向网络服务器(web)请求数据(HTML表单),然后解析HTML,提取出自己想要的数据。 它包括了根据url获取HTML数据、解析HTML,获取目标信息、存储数据几个步骤;过程中可能会涉及到数据库、网络服务器、HTTP协议、HTML、数据科学、网络安全、图像处理等非常多的内容。是不是觉得太复杂了,不用担心,对于初学者来说,并不需要全部掌握。

二、为什么需要爬虫

 经常会遇到这一类网页,登录进去后,可以查看到很多有用的数据,但是网页无导出功能,想要下载这部分数据,通常只能手动一点一点去复制,这种方式不仅复制的时候,再粘贴到表格中格式会混乱,要花时间去慢慢调整;其次如果有很多页的数据,还得一页一页翻页复制,其麻烦程度 可想而知。。。

   此时,了解一下python的爬虫,动手write一下,释放生产力。关于爬虫有很多使用的场景,也有很多可以去使用的模块,可以根据具体系统架构和爬取内容情况来适配使用。

三、测试用例

  这里以自己的一个测试系统为例,目标链接有个主机信息的表,但是前提需要登录后才能访问,并且也存在分页的情况,要求是后台获取的内容直接以excel形式保存展示。

四、测试过程

这个简单实例里,主要使用到3个基础模块:

requests:构建请求的相关动作,例如传递登录信息,调测目标网址,保存登录cookie等内容

BeautifulSoup:对获取到html文本内容进行解析,查找里面的表格内容

pandas:对解析后内容,用来存储到目标excel

通常在爬取具体内容数据时,先可以通过F12,查看下网页的源代码,了解下网页的结构,从而设计自己的脚本,上述例子的网页,只是个简单html内容页,有基础的表格属性内容,例如table、tr元素,所以只需要针对这些属性内容,直接匹配获取相应的值即可。

直接上脚本,有相关注释内容,如果有类似场景的可直接用

import requests
from bs4 import BeautifulSoup
import pandas as pd#构建缓存登录的session
url = 'http://XXX.XXX.XXX.XXX:5000/auth/login'
username = 'XXXX'
password = 'XXXX'
# 创建一个session,作用会自动保存cookie
session = requests.session()
data = {'username': username,'password': password
}
# 使用session发起post请求来获取登录后的cookie,cookie已经存在session中
response = session.post(url = url,data=data)#提前创建个空列表来存储数据,方便后面写入excel
data = []###构建目标网页的请求,存在分页的情况,写个循环
url = 'http://192.168.163.134:5000/query/inventory?page={}'
for i in range(1, 5):url2 = url.format(i)html_content = session.get(url=url2).text#print(html_content)#对获取到html使用BeautifulSoup库解析HTML内容soup = BeautifulSoup(html_content, 'html.parser') # 查找解析后表格元素table = soup.find('table') # 获取所有行rows = table.find_all('tr')# 遍历所有行,并将每行的所有单元格的文本添加到data列表中for row in rows:cells = row.find_all('td')if len(cells) > 1:row_data = [cell.text.strip() for cell in cells]data.append({"主机IP": row_data[0],  "系统名称": row_data[1],  "系统类型": row_data[2],  "主机分组": row_data[3],  "纳管情况": row_data[4],  "纳管时间": row_data[5],  })# 输出列表
#print(data)# 使用 pandas 将列表转换成 DataFrame
df = pd.DataFrame(data, columns=['主机IP', '系统名称', '系统类型', '主机分组', '纳管情况', '纳管时间'])
# 使用 to_excel 函数将 DataFrame 保存为 excel 文件
df.to_excel("data.xlsx")

五、测试效果

写好的代码,以后随时需要导出数据,执行下py脚本即可,大工告成~

输出的表格效果如下,对比网页展示的内容,完全get:

六、应对反爬几点建议

在写爬虫时,经常会被目标网址禁止爬取内容,那么在写爬虫防止被封有以下几点建议:

1、伪装请求报头

例如伪装成浏览器访问

2、减轻访问频率,速度

例如控制访问频率,加入time.sleep参数

3、使用代理IP

例如加入proxy代理地址,掩藏真实访问地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/416981.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

6.4.4释放音频

6.4.4释放音频 许多Flash动画里的音乐或歌曲非常好听,能不能在没有源文件的情况下把里面的声音文件取出来呢?利用Swf2VideoConverter2可以轻松做到这一点。 1.单击“添加”按钮,在弹出的下拉菜单中选择“添加文件”,…

火速收藏!2024 新年微信红包封面领取全攻略

2024“龙”重登场!今年有哪些令人期待的红包封面? 前方大批精美红包封面来袭,全新品牌氛围红包封面上线,支持品牌定制特色氛围元素,沉浸感受浓浓年味儿,收获满满惊喜! 新年开好运,微…

1432 - 走出迷宫的最少步数-广搜

代码 #include<bits/stdc.h> using namespace std; char a[51][51]; int r,c; int fx[4]{0,0,1,-1}; int fy[4]{1,-1,0,0}; int tx,ty; struct Node{int x,y,step; }; int bfs(int x,int y){a[x][y]#;queue<Node> q;q.push({x,y,1});while(!q.empty()){Node Curre…

小白快速上手maven【基础篇】

Maven的概念和作用 Maven是什么&#xff1f;POM的概念 Maven的作用&#xff1f; 提供自动化构建项目的方式&#xff0c;并且统一了项目的结构管理项目中的依赖 Maven基础概念-仓库&#xff0c;坐标&#xff0c;仓库配置 仓库&#xff1a;用于存储各种jar包资源 根据功能的不…

git本地分支的合并

目录 第一章、本地分支的切换测试1.1&#xff09;切换之前的master分支下文件内容1.2&#xff09;切换到develop分支后修改文件1.3&#xff09;切回master分支出现报错&#xff1a;1.4&#xff09;报错分析 第二章、解决方式2.1&#xff09;方式1&#xff1a;commit2.2&#xf…

NFS 共享存储服务

一、存储和NFS共享 1.存储类型分为三种 直连式存储&#xff1a;Direct-Attached Storage&#xff0c;简称DAS 网络附加存储&#xff1a;Network-Attached Storage&#xff0c;简称NAS 存储区域网络&#xff1a;Storage Area Network&#xff0c;简称SAN DAS:存储和主机是直连…

【JupyterLab】在 conda 虚拟环境中 JupyterLab 的安装与使用

【JupyterLab】在 conda 虚拟环境中 JupyterLab 的安装与使用 1 JupyterLab 介绍2 安装2.1 Jupyter Kernel 与 conda 虚拟环境 3 使用3.1 安装中文语言包(Optional)3.2 启动3.3 常用快捷键3.3.1 命令模式下 3.4 远程访问个人计算机3.4.1 局域网下 1 JupyterLab 介绍 官方文档: …

PMIC 基础知识浅析(四)

PMIC 后端研究现状&#xff1a; 现今针对便携式移动平台的电源管理芯片仍以传统分离型 PMIC为主。 根据后端设计的特点&#xff0c;传统分离型 PMIC 又可分三大类。 控制芯片与开关 MOSFET 分离型&#xff0c;MOSFET 外置于PCB上&#xff0c;芯片仅提供智能控制功能。 此类IC…

20240116使用Firefly的AIO-3399J的预编译的Android10固件确认RT5640声卡信息

20240116使用Firefly的AIO-3399J的预编译的Android10固件确认RT5640声卡信息 2024/1/16 17:55 百度&#xff1a;RK3399 ALC5640 RK3399 RT5640 BING&#xff1a;RK3399 ALC5640 LINE-IN接麦克风不会有声音的。 耳机只有右边有声音&#xff0c;但是偏小&#xff0c;可以通过音量…

SQL SERVER无法连接到服务器解决过程记录

很久没用sql server了&#xff0c;这几天打算更新SQL SERVER数据库&#xff1a;SQL看这一篇就看够了&#xff08;附详细代码及截图&#xff09; 这篇文章&#xff0c;发现连接不上服务器。 找一下解决办法。 一、打开服务界面 在键盘上按“WINR”快捷键&#xff0c;打开运行…

6.4.3合并文件

6.4.3合并文件 有时候需要把多个SWF文件合并成同一个视频文件&#xff0c;利用Swf2VideoConverter2可以轻松实现这一功能。 1&#xff0e;单击“添加”按钮&#xff0c;在弹出的下拉菜单中选择“添加文件”&#xff0c;在弹出的“Open Swf Files(打开Swf文件)”窗口中选择swf…

MySQL中SELECT字句的顺序以及具体使用

目录 1.SELECT字句及其顺序 2.使用方法举例 3.HAVING和WHERE 1.SELECT字句及其顺序 *下表来自于图灵程序设计丛书&#xff0c;数据库系列——《SQL必知必会》 2.使用方法举例 *题目来源于牛客网 题目描述 现在运营想要查看不同大学的用户平均发帖情况&#xff0c;并期望结…