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

用python来爬取某鱼的商品信息(2/2)

目录

上一篇文章

本章内容

设置浏览器为运行结束后不关闭(可选)

定位到搜索框的xpath地址

执行动作

获取cookie

保存为json文件

修改cookie的sameSite值并且导入cookie

导入cookie(出错)

导入cookie(修改后)

最后出现页面

需要注意的问题

所有代码

总结


上一篇文章

用python来爬取某鱼的商品信息(1/2)_木木em哈哈的博客-CSDN博客本章讲理论,后面一节讲代码拿来练练手的,练练selenium包,实战一下(本来想拿来练手的,没想到他喵的有挺多防爬的,直接开局就困难难度我靠,凸(艹皿艹 ))找到可以爬取的网站然后添加cookie然后刷新界面就可以发现搜索结果出来了这一次实战经历真的让我遇到了selenium许多奇奇怪怪的反爬手段,也是让我可以大幅度提升自己实战经验的一个经历,前前后后排bug,绕反爬,这一个项目打了整整两天。累diethttps://blog.csdn.net/mumuemhaha/article/details/132238660?spm=1001.2014.3001.5502

本章内容

主要讲的是上一章的代码实现

导入所需要的程序包

from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
import time
import json

设置浏览器为运行结束后不关闭(可选)

之后先设置自己想要搜索的内容,并且把浏览器设置为允许结束后不关闭,并且打开要爬取的咸鱼网站(可设可不设)

input_1=input('输入想要搜索的内容:')option = webdriver.ChromeOptions()
option.add_experimental_option("detach", True)# 注意此处添加了chrome_options参数
driver = webdriver.Chrome(chrome_options=option)
driver.get('https://h5.m.goofish.com/app/idleFish-F2e/fish-mini-pha/search.html?spm=a2170.tb_mini_index.0.0')

定位到搜索框的xpath地址

driver_1=driver.find_element(by='xpath',value='/html/body/div/div/div[1]/input')

执行动作

执行动作(调用鼠标api点击刚刚定位的搜索框,然后输入input_1的值并且回车

ActionChains(driver) \.move_to_element(driver_1) \.click_and_hold() \.pause(1) \.send_keys(input_1) \.key_down(Keys.ENTER)\.perform()time.sleep(1)

中间的.pause(1)以及time.sleep(1)是等待一秒钟的时间(保险起见,怕网页没有加载好,或者你设置一个selenium等待函数更保险)

获取cookie

接下来就是获取cookie,获取cookie方法上一章讲了

 在你的浏览器上,下载cookie editor插件登录,不要用运行python时跳出的浏览器,正常打开浏览器(这样不会跳验证码。。。即使跳了也可以手动成功过),导出你的cookie

保存为json文件

然后新建一个json格式的文件并且把它命名为cookie.json

修改cookie的sameSite值并且导入cookie

导入cookie(出错)

cookies=json.load(open('cookie.json', 'r'))
for cookie in cookies:driver.add_cookie(cookie)

但是!!!!

前面讲过直接导入会报错

 assert cookie_dict[‘sameSite‘] in [‘Strict‘, ‘Lax‘] AssertionError()

由于这里语法规定sameSite必须为‘Strict‘, ‘Lax‘两个之一,不然就报错

所以我们要遍历字典,并且把字典中的sameSite设置为Strict

导入cookie(修改后)

所以代码改为

cookies=json.load(open('cookie.json', 'r'))
for cookie in cookies:if'sameSite' in cookie:cookie['sameSite'] = 'Strict'driver.add_cookie(cookie)
driver.refresh()

注意,导入cookie后要用driver.refresh()刷新

打印源代码

 然后打印网页的源代码,注意要等3秒加载元素(或者用re库带的筛选,筛选你想要的的元素,比如商品链接,价格,以及介绍)

time.sleep(3)
print(driver.page_source)

最后出现页面

需要注意的问题

  • 首先要说的是这个通过python不如通过app抓包来的稳定
  • 页面中你登录的cookie的失效时间是不确定的,所以你可能需要经常更新cookie(看个人情况)
  • 无法频繁(比如5分钟一次)搜索,否则会跳滑块验证,或者你有多个账号也可以搞(大概也就这个流程)
  • 写出来的代码只是提取出来网页源代码——其实都提取出网页源代码了,使用就只有一个筛选了(csdn上有大把的优质博主和大佬教你通过源代码过滤有用的信息)
  • 当然如果需要的话我可以再水一篇博客
  • 它理论上可以关联到钉钉机器人或者是QQ机器人上实现定时推送咸鱼信息(啊?你问我为什么不继续写?因为还没学,不然这期标题末尾就不是(2/2)而是(2/3)了;咳咳咳...u1s1,钉钉应该是有教程教的,傻妞机器人应该也可以执行python脚本的,“按理”来说不会很难实现,实在不行我再去学吧(累die...)

所有代码

所有代码附上吧

from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
import time
import jsoninput_1=input('输入想要搜索的内容:')# 不自动关闭浏览器
option = webdriver.ChromeOptions()
option.add_experimental_option("detach", True)# 注意此处添加了chrome_options参数
driver = webdriver.Chrome(chrome_options=option)
driver.get('https://h5.m.goofish.com/app/idleFish-F2e/fish-mini-pha/search.html?spm=a2170.tb_mini_index.0.0')driver_1=driver.find_element(by='xpath',value='/html/body/div/div/div[1]/input')ActionChains(driver) \.move_to_element(driver_1) \.click_and_hold() \.pause(1) \.send_keys(input_1) \.key_down(Keys.ENTER)\.perform()time.sleep(1)cookies=json.load(open('cookie.json', 'r'))
for cookie in cookies:if'sameSite' in cookie:cookie['sameSite'] = 'Strict'driver.add_cookie(cookie)
driver.refresh()time.sleep(3)
print(driver.page_source)

总结

这些代码搞得我晕头转向的,尤其是那个内嵌的登录页面让我走了很多弯路,但是对于这个库的学习应该也算是初窥门径吧,如果有大佬有优化的地方欢迎指出(真的没学多深,很容易出错的)

相关文章:

用python来爬取某鱼的商品信息(2/2)

目录 上一篇文章 本章内容 设置浏览器为运行结束后不关闭(可选) 定位到搜索框的xpath地址 执行动作 获取cookie 保存为json文件 修改cookie的sameSite值并且导入cookie 导入cookie(出错) 导入cookie(修改后&…...

【Fegin技术专题】「原生态」打开Fegin之RPC技术的开端,你会使用原生态的Fegin吗?(上)

前提介绍 Feign是SpringCloud中服务消费端的调用框架,通常与ribbon,hystrix等组合使用。由于遗留原因,某些项目中,整个系统并不是SpringCloud项目,甚至不是Spring项目,而使用者关注的重点仅仅是简化http调…...

React Native Vector Icons的使用

介绍 React Native Vector Icons是一个用于在React Native应用中使用矢量图标的库。它提供了许多常见的图标集,如FontAwesome、Ionicons等。 使用 首先,你需要在你的React Native项目中安装React Native Vector Icons库。可以使用以下命令进行安装&…...

Redis安装和配置(Linux)

一、安装准备 VMware虚拟机准备: https://www.vmware.com/cn/products/workstation-pro.html Centos7.0准备: https://www.centos.org/ 二、安装 安装好VMware以后,进入VMware,然后创建新的虚拟机 创建好虚拟机以后,进行安装C…...

安卓源码分析(10)Lifecycle实现组件生命周期管理

参考: https://developer.android.google.cn/topic/libraries/architecture/lifecycle?hlzh-cn#java https://developer.android.google.cn/reference/androidx/lifecycle/Lifecycle 文章目录 1、概述2、LifeCycle类3、LifecycleOwner类4、LifecycleObserver类 1、…...

IP 多播协议(IP Multicast Protocol)

IP 多播协议(IP Multicast Protocol)是一种在网络中一对多传输数据的通信方式。在传统的单播通信中,数据从一个发送方发送到一个接收方;而在多播通信中,数据可以从一个发送方传输到多个接收方,从而有效地节…...

Jmeter 配置环境变量,简明教程专享

通过给 JMeter 配置环境变量,可以快捷的打开 JMeter: 打开终端。执行 jmeter。 配置环境变量的方法如下。 Mac 和 Linux 系统 在 ~/.bashrc 中加如下内容: export JMETER_HOMEJMeter所在目录 export PATH$JAVA_HOME/bin:$PATH:.:$JMETER…...

WebService—XFire配置笔记

在学习之前,一直以为WebService就是一个工具,在两个服务器之间建立一个通信,帮我们把需要传输的数据组织成规范的XML数据并发送到目的地,实际情况也确实是这样的,不过更高级一点的是,XFire不但可以帮我们生成XML发送,而且可以在接收了xml之后还可以直接返回对象给我们用…...

【LangChain学习】基于PDF文档构建问答知识库(一)前期准备

这系列主要介绍如何使用LangChain大模型,结合ChatGPT3.5,基于PDF文档构建专属的问答知识库。 一、 环境搭建 LangChain 和 OpenAI 本身可支持 Nodejs 和 Python 两个版本,笔者后续的介绍主要用到Python版本,如果有需要Nodejs版本…...

Word(1):文章页码设置

1.需求 在文档的封皮页不设置页码,在目录页页码设置为罗马数字,在正文使用阿拉伯数字。 2.解决方法 step1: 在封皮页的最后,点击”插入“-分隔符-分节符(下一页) step2:在目录页的最后&…...

Linux MQTT智能家居(温度,湿度,环境监测,摄像头等界面布局设置)

文章目录 前言一、温度湿度曲线布局二、环境监测界面布局三、摄像头界面布局总结 前言 本篇文章来完成另外三个界面的布局设置。 这里会使用到 feiyangqingyun的一些控件库。 一、温度湿度曲线布局 TempHumtiy.h: #ifndef TEMPHUMTIY_H #define TEMPHUMTIY_H#include <…...

权衡与选择:如何巧妙管理项目需求的优先级

在项目管理领域&#xff0c;处理和管理需求可能是最具挑战性的环节之一。每一个项目都充满了各种需求&#xff0c;从业务需求到技术需求&#xff0c;从用户需求到系统需求。而如何有效地为这些需求排列优先级&#xff0c;不仅会影响项目的进度和资源分配&#xff0c;还会直接关…...

UGUI组件EventTrigger用法

一.Unity编辑器中EventTrigger组件用法 1.添加事件类型 2.绑定gameObject指定组件的方法 3.方法执行逻辑 public class NewBehaviourScript : MonoBehaviour {public void PointerDown(){Debug.Log("Trigger PointerDown");} } 4.按下鼠标&#xff0c;绑定方法成功…...

Visual Studio 2019 详细安装教程(图文版)

前言 Visual Studio 2019 安装包的下载教程、安装教程 教程 博主博客链接&#xff1a;https://blog.csdn.net/m0_74014525 关注博主&#xff0c;后期持续更新系列文章 ********文章附有百度网盘安装包链接********* 系列文章 第一篇&#xff1a;Visual Studio 2019 详细安装教…...

idea添加作者信息

idea添加作者信息 自定义作者信息idea添加作者信息自定义作者信息 自定义作者信息 idea添加作者信息 在idea中&#xff0c;经常会有这些波浪纹提示&#xff0c;放在上面之后会提示添加作者信息,点击添加作者信息后&#xff0c;但是不是自己想要的 这里提取的话好像没什么办法…...

后端开发6.权限控制模块

概述 权限控制采用springsecurity 数据库设计 用户表 DROP TABLE IF EXISTS `admin`; CREATE TABLE `admin` (`aid` int(32) NOT NULL AUTO_INCREMENT,`email` varchar(50) DEFAULT NULL,`username` varchar(50) DEFAULT NULL,`password` varchar(255) DEFAULT NULL,`phone…...

Golang原生实现JA3指纹修改,并支持Proxy代理

起因 抓取某个HTTPS网站的时候 开启charles代理能够抓取成功,关闭被风控 通过检测,怀疑可能是tls的时候有区别 尝试 golang的http中,Transport.TLSClientConfig是可以自定义设置的 但起初通过随意设置并不能绕过风控 困难 使用golang的http客户端,修改DialTLSContext函数的…...

一个案例:Vue2组件化开发组件从入门到入土

1. 环境搭建 1.1. 创建项目 npm install -g vue/clivue create vue_study_todolist1.2. 清空项目代码 清楚HelloWorld.Vue代码中的内容。 1.3. 启动空项目 1.4 项目目标 项目组件实现以下效果 2. 组件拆分代码 Vue是一个基于组件的框架&#xff0c;允许您将界面拆分成小的…...

智慧工地源码 智慧工地云平台源码 智慧工地APP源码

智慧工地的核心是数字化&#xff0c;它通过传感器、监控设备、智能终端等技术手段&#xff0c;实现对工地各个环节的实时数据采集和传输&#xff0c;如环境温度、湿度、噪音等数据信息&#xff0c;将数据汇集到云端进行处理和分析&#xff0c;生成各种报表、图表和预警信息&…...

考研408 | 【计算机网络】 网络层

导图 网络层&#xff1a; 路由器功能&#xff1a;转发&路由选择 数据平面 数据平面执行的主要功能是根据转发表进行转发&#xff0c;这是路由器的本地动作。 控制平面 1.传统方法/每路由器法&#xff1a; 2.SDN方法&#xff08;Software-Defined Networking) 控制平面中的…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...