python爬取robomaster论坛文章数据,携带登录信息

2023-12-09 10:04

本文主要是介绍python爬取robomaster论坛文章数据,携带登录信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一. 内容简介

python爬取robomaster论坛文章数据。

二. 软件环境

2.1vsCode

2.2Anaconda

version: conda 22.9.0

2.3代码

三.主要流程

3.1 接口分析,以及网页结构分析

# 这是文章链接,其实id就是文章的id
# https://bbs.robomaster.com/forum.php?mod=viewthread&tid=9234
# 文章结构
# 大疆这个文章,在访问网站时候,他会把文章内容在服务端拼接好,是没办法直接拿到接口数据的,
# 第一个方面就是,urllib访问时候,拿到整个网页结构,这个结构是不带js执行的,虽然数据都有,但是是和浏览器里面有些定位不太一样的,在用xpath解析时候,经常找不到,有点不太方便
# 第二个方面,就是因为里面有些内容需要登录,这个登录有两种验证方式,一种是token,一种是cookie,大疆是cookie,所以我们需要在请求头中假如cooke访问,分别用urllib和elenium实现

3.2 通过urllib携带cookie爬取网页结构

import urllib.request
from lxml import etree
import json
from selenium.webdriver.common.by import By
from selenium import webdriver
import random 
import time
import pyautogui
from datetime import datetime
import ssl
import re
import urllib.request
def urllibRequest(url):headers = {'Cookie':'换成自己的,直接去网页请求里面复制','User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1'}# 创建一个不验证证书的上下文对象context = ssl._create_unverified_context()request = urllib.request.Request(url=url, headers=headers)response = urllib.request.urlopen(request, context=context)  # 在这里传入context参数content = response.read().decode('UTF-8')return contenturl = "https://bbs.robomaster.com/forum.php?mod=viewthread&tid=9234"
content = urllibRequest(url)
print(content)

里面有一点需要注意的就是,这个网页结构如果不能解析的话,要加这个,里面xml会报错,替换一下就好


content_without_declaration = re.sub(r'^<\?xml.*\?>', '', content)
html_tree = etree.HTML(content_without_declaration)

在这里插入图片描述

3.3 通过selenium携带cookie爬取网页结构

直接给selenium加个请求头

import urllib.request
from lxml import etree
import json
from selenium.webdriver.common.by import By
from selenium import webdriver
import random 
import time
import pyautogui
from datetime import datetime
import randomdef seleniumRequest(url,chrome_path,waitTime): headers = {'User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1''Cookie':'换自己的'}options = webdriver.ChromeOptions()# 添加cookie到浏览器中options.add_experimental_option('excludeSwitches', ['enable-automation'])options.add_experimental_option('useAutomationExtension', False)# 添加Header到options中options.add_argument(f'user-agent={headers["User-Agent"]}')options.add_argument(f'cookie={headers["Cookie"]}')# 谷歌浏览器exe位置options.binary_location = chrome_path# 是否要启动页面# options.add_argument("--headless")  # 启用无头模式# GPU加速有时候会出bugoptions.add_argument("--disable-gpu")  # 禁用GPU加速options.add_argument("--disable-blink-features=AutomationControlled")driver = webdriver.Chrome(options=options)driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument',{'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'})# 启动要填写的地址,这就启动浏览器driver.get(url)# 这是关闭浏览器# 等待页面加载,可以根据实际情况调整等待时间driver.implicitly_wait(waitTime)# 获取完整页面结构full_page_content = driver.page_source# 关闭浏览器driver.quit()return full_page_content
# # 处理完整页面结构
# print(full_page_content)
url = "https://bbs.robomaster.com/forum.php?mod=viewthread&tid=9234"
# print(url)chrome_path = r"C:\Program Files\Google\Chrome\Application\chrome.exe"
waitTime = 8
# 获取网页结构
# 通过selenium调用浏览器访问
content = seleniumRequest(url,chrome_path,waitTime)
print(content)

在这里插入图片描述

3.4 网页结构定位

一般都是通过xpath语法,一个div下面如果有多个类,我xpath就选不到了,可以用下面这个

//div[contains(@class, 'example')]

还有一种方式,可以用谷歌浏览器里面的工具,就不用自己一个一个选了
在这里插入图片描述

还有就是xpath选取得结构,用txt保存下来里面代码,包括结构

# # 解析对应数据
# contents = html_tree.xpath("//div[@class='message']")[0]
# print(contents)# # # 将选定的div元素转换为字符串
# div_html = etree.tostring(contents, encoding="unicode")# # print(div_html)
# # # 将HTML保存为文件
# with open('output.txt', 'w', encoding='utf-8') as f:
#     f.write(div_html)

这篇关于python爬取robomaster论坛文章数据,携带登录信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/473394

相关文章

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

利用Python打造一个Excel记账模板

《利用Python打造一个Excel记账模板》这篇文章主要为大家详细介绍了如何使用Python打造一个超实用的Excel记账模板,可以帮助大家高效管理财务,迈向财富自由之路,感兴趣的小伙伴快跟随小编一... 目录设置预算百分比超支标红预警记账模板功能介绍基础记账预算管理可视化分析摸鱼时间理财法碎片时间利用财