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代理地址,掩藏真实访问地址

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

介绍几个免费的国内chatgpt网站

概述:水点文章。 第一:chataa网站 chataa (chat778.com) 进去之后注册一下,即可免费使用。 第二:AlchatOS网站 AIchatOS 第三:ChatGPT在线聊天 ChatGPT在线聊天 (zxf7460.cn) 第四:说我真帅&#xff0…

【Python】--- 基础语法(1)

目录 1.变量和表达式2.变量和类型2.1变量是什么2.2变量的语法2.3变量的类型2.3.1整数2.3.2浮点数(小数)2.3.3字符串2.3.4布尔2.3.5其他 2.4为什么要有这么多类型2.5动态类型特征 3.注释3.1注释的语法3.2注释的规范 结语 1.变量和表达式 对python的学习就…

麒麟V10挂载iso,配置yum源

本文介绍yum 如何挂载本地镜像源 1) 拷贝镜像到本地 2) 执行以下命令: # mount -o loop 镜像路径及镜像名字 /mnt(或 media) 挂载前 挂载后 3) 进入/etc/yum.repos.d(yum.repos.d 是一个目录,该目录是分析 RPM 软件…

kafka(一)——简介

简介 Kafka 是一种分布式、支持分区、多副本的消息中间件,支持发布-订阅模式,多用于实时处理大量数据缓存的场景,类似于一个“缓存池”。 架构 Producer:消息生产者;Consumer:消息消费者;Brok…

【Go】rune和byte类型的认识与使用

【Go】rune和byte类型的认识与使用 大家好 我是寸铁👊 总结了一篇rune和byte类型的认识与使用的文章✨ 喜欢的小伙伴可以点点关注 💝 byte和rune类型定义 byte,占用1个字节,共8个比特位,所以它实际上和uint8没什么本质区别,它表示…

Windows11开启SSH服务

文章目录 环境背景安装SSH服务配置SSH服务启动/停止SSH服务登录接下来参考 环境 Windows 11 家庭中文版 背景 在我的Windows电脑上,有些网站无法直接访问,所以需要通过Mac来代理。为此,需要创建一个位于Windows和Mac之间的SSH tunnel。 在…

【C++】vector容器接口要点的补充

接口缩容 在VS编译器的模式下&#xff0c;类似于erase和insert接口的函数通常会进行缩容&#xff0c;因此&#xff0c;insert和erase行参中的迭代器可能会失效。下图中以erase为例&#xff1a; 代码如下&#xff1a; #include <iostream> #include <vector> #inclu…

如何本地部署虚VideoReTalking

环境&#xff1a; Win10专业版 VideoReTalking 问题描述&#xff1a; 如何本地部署虚VideoReTalking 解决方案&#xff1a; VideoReTalking是一个强大的开源AI对嘴型工具&#xff0c;它是我目前使用过的AI对嘴型工具中效果最好的一个&#xff01;它是由西安电子科技大学、…

MATLAB聚类工具箱

本文借鉴了数学建模清风老师的课件与思路&#xff0c;可以点击查看链接查看清风老师视频讲解&#xff1a;【1】MATLAB聚类工具箱&#xff1a;提前预览工具箱的核心功能_哔哩哔哩_bilibili 关于工具箱的获取&#xff0c;在数学建模学习交流公众号里发送&#xff1a; 567891 %% …

idea 安装免费Ai工具 codeium

目录 概述 ide安装 使用 chat问答 自动写代码 除此外小功能 概述 这已经是我目前用的最好免费的Ai工具了&#xff0c;当然你要是有钱最好还是用点花钱的&#xff0c;比如copilot&#xff0c;他可以在idea全家桶包括vs&#xff0c;还有c/c的vs上运行&#xff0c;还贼强&am…

数据加密-mysql

想要实现数据加密可以在mysql数据库表实现数据加密&#xff0c;来确保数据安全。下面就是加密算法AES_ENCRYPT&#xff0c;其他加密算法类似。 1 创建一张临时表test_table CREATE TABLE test_table (name varchar(20) DEFAULT NULL,id blob ) ENGINEInnoDB DEFAULT CHARSETu…

【JavaEE】_基于UDP实现网络通信

目录 1. 服务器 1.1 实现逻辑 1.2 代码 1.3 部分代码解释 2. 客户端 2.1 实现逻辑 2.2 代码 2.3 客户端部分代码解释 3. 程序运行结果 4. 服务器客户端交互逻辑 此篇内容为实现UDP版本的回显服务器echo server&#xff1b; 普通服务器&#xff1a;收到请求&#xff…

领略指针之妙

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

【高等数学之极限】

一、引言 我们先思考一下&#xff0c;上面三个表达式&#xff0c;是否可以将极限值直接代入求值&#xff0c;我们在计算之前需要先分析一下&#xff0c;如果将极限值代入&#xff0c;那么表达式将会变成什么形式? 经过上面的分析&#xff0c;我们发现第一个式子可以直接带入&a…

微电网优化MATLAB:遗传算法(Genetic Algorithm,GA)求解微电网优化(提供MATLAB代码)

一、微网系统运行优化模型 微电网优化是指通过对微电网系统中各个组件的运行状态进行监测和调节&#xff0c;以实现微电网系统的高效运行和能源利用的最大化。微电网是由多种能源资源&#xff08;如太阳能、风能、储能等&#xff09;和负载&#xff08;如建筑、工业设备等&…

通用人工智能的能力评估框架-Levels of AGI Operationalizing Progress on the Path to AGI

通用人工智能的能力评估框架-Levels of AGI: Operationalizing Progress on the Path to AGI 译自’Levels of AGI: Operationalizing Progress on the Path to AGI’&#xff0c;有所删节.笔者能力有限&#xff0c;敬请勘误。 摘要 Google DeepMind提出一种针对通用人工智能 …

端口映射的定义、特点、场景、实例、常见问题回答(Port Mapping)

目 录 一、端口映射&#xff08;Port Mapping&#xff09; 二、端口映射应用场景&#xff08;什么时候用到端口映射&#xff09; &#xff08;一&#xff09;、使用端口映射的条件 &#xff08;二&#xff09;使用端口映射的具体场景 三、端口映射技术的特点 …

LLM之RAG实战(十七)| 高级RAG:通过使用LlamaIndex重新排序来提高检索效率

基本RAG的检索是静态的&#xff0c;会检索到固定数字&#xff08;k&#xff09;个相关文档&#xff0c;而如果查询需要更多的上下文&#xff08;例如摘要&#xff09;或更少的上下文&#xff0c;该怎么办&#xff1f; 可以通过在以下两个阶段来实现动态检索&#xff1a; 预检索…

Python对Excel文件中不在指定区间内的数据加以去除的方法

本文介绍基于Python语言&#xff0c;读取Excel表格文件&#xff0c;基于我们给定的规则&#xff0c;对其中的数据加以筛选&#xff0c;将不在指定数据范围内的数据剔除&#xff0c;保留符合我们需要的数据的方法。 首先&#xff0c;我们来明确一下本文的具体需求。现有一个Exc…

Centos 7 单机部署 consul

一、下载安装 参考官网文档 Install | Consul | HashiCorp Developer 进入Centos 执行下面命令 sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo sudo yum -y install consul 这种方法安装完成…