当前位置: 首页 > news >正文

python爬虫试手

同事让帮忙在某个网站爬点数据,首次尝试爬虫,遇到的问题及解决思路记录下。

大体需求是需要爬取详情页内的信息,详情页有一定格式规律,但是详情页需要从列表页跳入,列表页中的每一条记录需要鼠标悬停才会弹出跳转链接,点击后才可跳转,然后将数据存在excel中,一个个解决吧。

第一步是先爬取详情页的数据,发现页面数据是js渲染出来的,直接用请求获取不到信息,于是使用selenium来模拟浏览器实际请求,然后需要的各个标签值也都没有id,就根据class来获取值的列表,具体方法为

from selenium import webdriverstrurl = 'https://xxxxxxxx?id='+stribrowser = webdriver.Chrome()try:browser.get(strurl)item1 = browser.find_elements(by=By.CLASS_NAME, value="xxxxxxxx")item2 = browser.find_elements(by=By.CLASS_NAME, value="yyyyyyyy")item3 = browser.find_elements(by=By.CLASS_NAME, value="zzzzzzzz")# text='\n'+'基本信息:'+'\n'# for str1,str2 in zip(item1,item2):#   print(str1.text ,":",str2.text)#   text+=str1.text + ":"+ str2.text+'\n' #加入到字符串中,并换行## for str in item3:#   text+='\n'+"使用案例:" + str.text+'\n' #加入到字符串中,并换行#   print(str.text+ '\n')finally:browser.close()

获取到需要的值,然后需要把值放到excel中,使用openpyxl 将获取到的值拼成一行追加到excel中,具体方法如下:

from openpyxl import load_workbook# 打开 Excel 文件wb = load_workbook('test.xlsx')# 选择要操作的工作表ws = wb['Sheet2']new_data = []for str2 in item2:new_data.append(str2.text)for str in item3:new_data.append(str.text)# 在最后一行添加数据ws.append(new_data)# 保存文件wb.save('test.xlsx')

这样单详情页的内容可以搞到excel中了,需要搞抓所有记录的问题,因为列表页首先也是js渲染出来的,还有需要模拟悬停才能弹出跳转链接,研究了下详情页的url,都是xxx?id=aaa,这个aaa虽然是int,但是也没规律,随便找了几个值找不到对应页面的时候会报错,但是列表请求页可以看到对于列表的分页请求,相应为json格式,有个列表包含各个对象的id值,整好就是详情页的id值,那就这么搞把,列表信息通过这个请求模拟,然后从相应里取各个id,遍历跳转,一开始尝试了将列表请求跟遍历详情页拼在一个方法里,但是报“TypeError: 'WebElement' object is not callable”这个错,反正是自己用的小工具,先解决需求就行,分俩方法,把id结果集自己拼过来当参数,整合后参考代码如下,凑合看吧


{"code": 200,"message": "操作成功","data": {"pageNum": 2,"pageSize": 10,"totalPage": 10,"total": 100,"list": [{"id": aaaa,"logo": "6426cb.png"},{"id": bbbb,"logo": "6426cb.png"}]},"requestId": "abc"
}
import jsonwith open('searchResultP3.json', encoding='utf-8') as f:jsondata = json.load(f)jsonlist = jsondata["data"]["list"]datalist=[]for objjson in jsonlist:strid = str(objjson["id"])datalist.append(strid)print(datalist)
from selenium import webdriver
from selenium.webdriver.common.by import By
from openpyxl import load_workbookimport jsonfor stri in ['aaa', 'bbb', 'ccc']:strurl = 'https://xxx?id='+stribrowser = webdriver.Chrome()try:browser.get(strurl)item1 = browser.find_elements(by=By.CLASS_NAME, value="xxxxx")item2 = browser.find_elements(by=By.CLASS_NAME, value="yyyyy")item3 = browser.find_elements(by=By.CLASS_NAME, value="zzzzz")# text='\n'+'基本信息:'+'\n'# for str1,str2 in zip(item1,item2):#   print(str1.text ,":",str2.text)#   text+=str1.text + ":"+ str2.text+'\n' #加入到字符串中,并换行## for str in item3:#   text+='\n'+"使用案例:" + str.text+'\n' #加入到字符串中,并换行#   print(str.text+ '\n')# 打开 Excel 文件wb = load_workbook('test.xlsx')# 选择要操作的工作表ws = wb['Sheet2']new_data = []for str2 in item2:new_data.append(str2.text)for str in item3:new_data.append(str.text)# 在最后一行添加数据ws.append(new_data)# 保存文件wb.save('test.xlsx')finally:browser.close()

相关文章:

python爬虫试手

同事让帮忙在某个网站爬点数据,首次尝试爬虫,遇到的问题及解决思路记录下。 大体需求是需要爬取详情页内的信息,详情页有一定格式规律,但是详情页需要从列表页跳入,列表页中的每一条记录需要鼠标悬停才会弹出跳转链接…...

pandas 笔记:pivot_table 数据透视表

1 基本使用方法 pandas.pivot_table(data, valuesNone, indexNone, columnsNone, aggfuncmean, fill_valueNone, marginsFalse, dropnaTrue, margins_nameAll, observedFalse, sortTrue)2 主要参数 dataDataFramevalues要进行聚合的列index在数据透视表索引(index…...

C#(六十)之Convert类 和 Parse方法的区别

Convert数据类型转换类,从接触C#开始,就一直在用,这篇日志坐下深入的了解。 Convert类常用的类型转换方法 方法 说明 Convert.ToInt32() 转换为整型(int) Convert.ToChar() 转换为字符型(char) Convert.ToString() 转换为字符串型(st…...

暑期代码每日一练Day3:874. 模拟行走机器人

题目 874. 模拟行走机器人 分析 这道题就是个简单的模拟 主要有两点考察点: 对方向数组的运用 方向数组存储的是各个方向的单位向量,也即: 方向XY向北01向东10向南0-1向西-10 存储在数组中,则是方向数组: in…...

肖sir___环境相关的面试题

环境相关面试题 1、请简述多有米环境的搭建、用到了哪些工具和流程介绍? jdk、服务器、代码包、数据库 2、查看当前端口被哪个应用程序占用了? netstat -ntlp |grep 端口号 lsof -i :端口号 ps -ef|grep 端口号 3、Tomcat和Nginx的区别,ngi…...

代理IP、Socks5代理和SK5代理的前沿技术与未来发展趋势

代理IP的前沿技术应用 人工智能与智能代理:结合人工智能技术,代理IP可以更加智能地处理网络请求和数据流,提高代理效率和准确性。区块链与去中心化代理:通过区块链技术,代理IP可以实现去中心化管理和身份验证&#xf…...

VM(CentOS7安装和Linux连接工具以及换源)

目录 一、Linux意义 二、安装VMWare 三、centos7安装 1、正式安装CentOS7: 2、安装不了的解决方案 2.1常见问题——虚拟机开机就黑屏的完美解决办法 3、查看、设置IP地址 ① 查看ip地址:ip addr 或者 ifconfig, 注意与windows环境的区别…...

阿里云斩获 4 项年度云原生优秀案例丨阿里云云原生 6 月动态

云原生月度动态 ✦ CLOUD NATIVE 云原生是企业数字创新的最短路径。 《阿里云云原生每月动态》,从趋势热点、产品新功能、服务客户、开源与开发者动态等方面,为企业提供数字化的路径与指南。 本栏目每月更新。 01 趋势热点 🥇 阿里云 S…...

dede图片集上传图片时出错显示FILEID的解决办法

如果遇到过这问题的,就可以照此方法尝试了。 某日,某使用deecms v5.5的网站在后台上传图片时出现如下错误: 作为web生手的我很是迷茫。印象里之前并没有做什么改动,于是百思不得其解。Google、百度、DeDe官网搜索了一大圈&#xf…...

【亲测有效】 通过mysql指令 导出数据库中表名 和 表名的备注

标题你可以使用以下MySQL指令来导出数据库中表名和表名的备注: SELECT table_name, table_comment FROM information_schema.tables WHERE table_schema 你的数据库名;将上述指令中的"你的数据库名"替换为你实际使用的数据库名称,执行该指…...

【Nginx08】Nginx学习:HTTP核心模块(五)长连接与连接处理

Nginx学习:HTTP核心模块(五)长连接与连接处理 HTTP 基础知识大家掌握的怎么样呀?对于长连接这一块的内容应该也不是什么新鲜东西了吧。毕竟 HTTP1.1 都已经发布这么久了。今天主要来看的就是长连接相关的配置,另外还会…...

第八十五天学习记录:C++核心:内存分区模型

内存分区模型 C程序在执行时,将内存大方向划分为4个区域 1、代码区:存放函数体的二进制代码,由操作系统进行管理 2、全局区:存放全局变量和静态变量以及常量 3、栈区:由编译器自动分配释放,存放函数的参数…...

Chrome远程调试webview

网址 谷歌远程调试解决方案 https://blog.csdn.net/m0_56516186/article/details/131260563Chrome远程调试webview https://blog.csdn.net/weixin_44801980/article/details/117755550...

爬虫与反爬虫的攻防对抗

一、爬虫的简介 1 概念 爬虫最早源于搜索引擎,它是一种按照一定的规则,自动从互联网上抓取信息的程序,又被称为爬虫,网络机器人等。按爬虫功能可以分为网络爬虫和接口爬虫,按授权情况可以分为合法爬虫和恶意爬虫。恶…...

【机器学习】特征工程 - 字典特征提取

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 字典特征提取 一、特征提取API一、提取数字特征二、特征名字三、返回原始数据特征工…...

用户交互----进入游戏

一、增加交互----点击和拖动 1、点击鼠标画点的程序 设置 import pygame # Setup pygame.init() screen pygame.display.set_mode([800,600]) pygame.display.set_caption("单击画圆点") keep_going True RED (255,0,0) …...

排序算法 - 快速排序(4种方法实现)

快速排序 快速排序是啥?三数取中:1.挖坑法(推荐掌握)2.前后指针法(推荐掌握)3.左右指针法(霍尔版本)(容易出错)4.非递归实现 本篇文章的源代码在这&#xff0…...

C++入门知识点

目录 命名空间 命名空间定义 命名空间使用 法一:加命名空间名称及作用域限定符:: 法二:使用using部分展开(授权)某个命名空间中的成员 法三:使用using对整个命名空间全部展开(授权…...

开眼界了,AI绘画商业化最强玩家是“淘宝商家”

图片来源:由无界AI生成 7月,2023世界人工智能大会在上海召开,顶尖的投资人、创业者都去了。 创业者吐槽:投我啊,我很强。 投资人反问:你的商业模式是什么?护城河是什么? 创业者投资人…...

机器学习与深度学习——自定义函数进行线性回归模型

机器学习与深度学习——自定义函数进行线性回归模型 目的与要求 1、通过自定义函数进行线性回归模型对boston数据集前两个维度的数据进行模型训练并画出SSE和Epoch曲线图,画出真实值和预测值的散点图,最后进行二维和三维度可视化展示数据区域。 2、通过…...

如何在没有 iTunes 的情况下备份 iPhone

我可以在没有 iTunes 的情况下将 iPhone 备份到电脑吗?虽然 iTunes 曾经是备份 iPhone 的主要方法,但它并不是 iOS 用户唯一的备份选项。您可以选择多种方便的替代方案来备份 iPhone,无需使用 iTunes。您可以在这里获得更灵活、更人性化的备份…...

固定ip和非固定ip的区别是什么?如何固定ip地址

在互联网中,我们常会接触到固定IP和非固定IP的概念。它们究竟有何不同?如何固定IP地址?让我们一起来探究这个问题。 一、固定IP和非固定IP的区别是什么 固定IP(静态IP)和非固定IP(动态IP)是两种…...

宝塔面板安装nodejs后,通过node -v获取不到版本号,报错node: command not found

如果在 宝塔面板 安装了 Node.js,但运行 node -v 或 npm -v 时提示 command not found,通常是因为 Node.js 的路径未正确添加到系统环境变量。以下是解决方法: 1. 确认 Node.js 是否安装成功 (1)检查宝塔面板的 Node.…...

中型零售业数据库抉择:MySQL省成本,SQL SERVER?

针对中型零售企业(20台固定POS数十台移动POS,含库存管理与结算业务)的操作系统与数据库选型,需平衡性能、成本、扩展性及运维效率。结合行业实践与系统需求,建议如下: 🖥️ ​​一、操作系统选型…...

怎么让大语言模型(LLMs)自动生成和优化提示词:APE

怎么让大语言模型(LLMs)自动生成和优化提示词:APE https://arxiv.org/pdf/2211.01910 1. 研究目标:让机器自己学会设计提示词 问题:大语言模型(如GPT-3)很强大,但需要精心设计的“提示词”才能发挥最佳效果。过去靠人工设计提示词,费时费力,还可能因表述差异导致模…...

FPGA 动态重构配置流程

触发FPGA 进行配置的方式有两种,一种是断电后上电,另一种是在FPGA运行过程中,将PROGRAM 管脚拉低。将PROGRAM 管脚拉低500ns 以上就可以触发FPGA 进行重构。 FPGA 的配置过程大致可以分为:配置的触发和建立阶段、加载配置文件和建…...

DVWA全靶场

目录 暴破 Low - 万能密码 Medium - 转义 High - Token Impossible 命令注入 CSRF跨站请求伪造 - 抓包 Low Medium - 域名限制 High - 域名限制xss 文件包含 - 页面点点点 Low Medium - 过滤http:// High - file Impossible - 写死 文件上传 Low Medium - 文件…...

开始在本地部署自己的 Gitea 服务器

0.简介 在软件开发和团队协作中,代码管理是至关重要的环节。笔者一直使用gitblit管理自己的仓库。然鹅,这个软件已经很久没有更新了。经过多方考察,发现Gitea 是一款轻量级的开源代码托管平台,具有易于部署、资源占用少、功能丰富…...

c++算法学习5——贪心算法

一、贪心算法的原理 贪心算法(Greedy Algorithm)是一种在每一步选择中都采取当前最优决策的策略,通过局部最优解的累积逼近全局最优解。其核心思想是“着眼当前,忽略整体”,适用于满足​​最优子结构​​和​​贪心选…...

第二十八章 RTC——实时时钟

第二十八章 RTC——实时时钟​​​​​​​ 目录 第二十八章 RTC——实时时钟 1 RTC实时时钟简介 2 RTC外设框图剖析 3 UNIX时间戳 4 与RTC控制相关的库函数 4.1 等待时钟同步和操作完成 4.2 使能备份域涉及RTC配置 4.3 设置RTC时钟分频 4.4 设置、获取RTC计数器及闹钟 5 实时时…...