当前位置: 首页 > 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、通过…...

Dirsearch字典玄学:从默认字典到AI生成,我的扫描效率提升300%的秘密

Dirsearch字典玄学:从默认字典到AI生成,我的扫描效率提升300%的秘密 在Web安全测试的战场上,目录扫描工具就像侦察兵手中的望远镜,而字典则是望远镜的镜片质量。从业五年来,我见证了太多安全工程师将90%的时间浪费在无…...

你的电机仿真结果靠谱吗?聊聊Maxwell瞬态分析里那些容易被忽略的‘坑’

电机仿真精度提升指南:Maxwell瞬态分析中的关键细节与验证方法 当你在凌晨三点盯着屏幕上那条波动异常的转矩曲线时,是否曾怀疑过自己的仿真模型在说谎?作为从业十五年的电磁仿真专家,我见过太多工程师在项目验收前夜才发现仿真结…...

多角色语音合成解决方案:Chatterbox技术实现与应用指南

多角色语音合成解决方案:Chatterbox技术实现与应用指南 【免费下载链接】chatterbox Open source TTS model 项目地址: https://gitcode.com/GitHub_Trending/chatterbox7/chatterbox 在数字化内容创作与智能交互领域,语音合成技术正经历从单一语…...

Qt QFile与QTextStream高效文本处理实战指南

1. Qt文件处理基础与QFile核心用法 在Qt开发中,文件操作是每个开发者必须掌握的基础技能。无论是处理配置文件、记录日志还是数据持久化,都离不开对文件的读写操作。QFile作为Qt框架中专门用于文件操作的类,提供了跨平台的文件处理能力&…...

Android14 SurfaceFlinger启动流程与线程调度机制解析

1. SurfaceFlinger的启动入口与初始化流程 Android显示系统的核心服务SurfaceFlinger由init进程启动,这个设计保证了它在系统早期就能准备好图形合成能力。main函数作为入口点,首先做了一系列关键初始化: 设置Binder线程池的最大线程数为4&…...

从‘localhost:8080’到‘dev.myapp.com’:给本地服务绑个‘正经’域名的三种方法(Nginx/Docker/系统Hosts)

从‘localhost:8080’到‘dev.myapp.com’:本地服务域名绑定的实战指南 每次调试前端页面时,在浏览器地址栏反复输入localhost:3000或127.0.0.1:8080,这种体验总让人感觉像是在用临时解决方案应付正式开发需求。想象一下,当你的团…...

终极指南:VSCode Rainbow Fart如何通过Vue.js打造沉浸式编程体验

终极指南:VSCode Rainbow Fart如何通过Vue.js打造沉浸式编程体验 【免费下载链接】vscode-rainbow-fart 一个在你编程时疯狂称赞你的 VSCode 扩展插件 | An VSCode extension that keeps giving you compliment while you are coding, it will checks the keywords …...

LSPosed-Irena框架深度解析:构建下一代Android Hook框架的完整指南

LSPosed-Irena框架深度解析:构建下一代Android Hook框架的完整指南 【免费下载链接】LSPosed-Irena Useless LSPosed Framework Fork 项目地址: https://gitcode.com/gh_mirrors/ls/LSPosed-Irena LSPosed-Irena是一个基于LSPlant的ART hooking框架&#xff…...

思源宋体TTF:免费商用中文字体的终极解决方案

思源宋体TTF:免费商用中文字体的终极解决方案 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在为寻找高质量且免费商用的中文字体而烦恼吗?思源宋体TTF格式为…...

一加手机Root后玩机指南:用Magisk Delta模块实现这些实用功能(附模块推荐)

一加手机Root后进阶玩法:Magisk Delta模块实战指南 当你成功为一加手机解锁BL并获取Root权限后,真正的玩机之旅才刚刚开始。作为一款以极客精神著称的品牌,一加手机在Root后的可玩性远超普通设备。本文将聚焦Magisk Delta这一强大工具&#x…...