【项目实训】各种反爬策略及爬虫困难点总结

news2024/10/6 4:55:06

在这里,我总结了本次项目的数据收集过程中遇到的反爬虫策略以及一些爬虫过程中容易出现问题的地方。

user-agent

简单的设置user-agent头部为浏览器即可:
在这里插入图片描述

爬取标签中带href属性的网页

对于显示岗位列表的页面,通常检查其源代码就会发现,相应的标签处存在一个a标签,其中存在href属性值:
在这里插入图片描述
于是可以选择,爬取出该网页中的所有的href属性,再依次对href属性中的所有的网址进行爬取,

current_job_links=browser.find_elements(by=By.XPATH,value='//li[@class="border-top"]//a[@target="_blank"]')
for link in current_job_links:
    job_path = link.get_attribute("href")
    job_url = urljoin(self.base_url, job_path)
    job_links.append(job_url)

爬取使用js跳转的网页,进行选型卡管理

现在好多都是不存在href,而是使用javascript进行跳转,也就是点击卡片之后会新开一个选项卡,因此这里要使用selenium的选项卡管理来实现browser的url变化,从而获得新打开页面的url(如果不切换选项卡,即使模拟单击了卡片,也不能对打开的页面进行爬虫)
重点在于一定要记得切换选项卡!!

for card_element in card_elements:
    # 单击卡片元素
    browser.execute_script("arguments[0].click();",card_element)
    # 等待新页面加载完成
    wait.until(EC.number_of_windows_to_be(2))
    # 切换到新的窗口
    browser.switch_to.window(browser.window_handles[1])
    # 获取新页面的URL
    current_url2 = browser.current_url
    current_url_list.append(current_url2)
    browser.close()

分页爬取

url变化实现换页

大部分网页都是通过url的变化实现翻页的:
在这里插入图片描述
因此只需要修改相应网址的pageNo即可,

if self.page < 100:
   self.page += 1
   # 换url
   url = 'https://zhaopin.meituan.com/web/position?hiringType=2_6&pageNo=' +str(self.page)
   #再次调用爬虫
   yield scrapy.Request(url=url, callback=self.parse, dont_filter=True)
   time.sleep(3)  # 设置3秒间隔

换页url不变

使用selenium模拟浏览器点击下一页按钮。所以需要在网页中定位到”下一页“按钮的位置

next_button = browser.find_element(by=By.XPATH,value='//[@id="target_list"]/div/div[2]/div[3]/button[2]')
if not next_button.is_enabled():
	break
browser.execute_script("arguments[0].click();", next_button)

同时注意判断停止条件,当按钮不可用时表示到达最后

登录问题

在爬取京东招聘时需要首先进行登录
使用如下代码实现模拟登陆:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vite 动态导入警告问题解决方案

如上图我要实现从后台获取权限菜单并动态导入进行渲染 但由于 vite 暂时不支持这种导入方式 图中也给出了提示 本人也是这么去做了 但并没什么卵用 后来参考了 vite 的 import.meta.glob 这种方式 我在处理菜单权限控制的菜单里进行了如下操作&#xff1a; …

day001 环境的配置与工具的安装

VMware的软件包&#xff1a;https://pan.xunlei.com/s/VNs1KShnlZalTSJtejXXzchlA1?pwdudy5# 其他的软件可以在电脑管家中下载&#xff0c;注意不要安装到c盘&#xff0c;否则影响开机速度。 虚拟机工具&#xff1a;VMware17.5.1 1&#xff0c; 2&#xff0c; 3&#xff0c…

四川赤橙宏海商务信息咨询有限公司抖音电商领航者

在数字化浪潮席卷全球的今天&#xff0c;电商行业无疑是其中最为活跃、最具潜力的领域之一。而在中国这片广袤的土地上&#xff0c;四川赤橙宏海商务信息咨询有限公司以其独特的视角和前瞻性的战略布局&#xff0c;成为了抖音电商服务领域的佼佼者。今天&#xff0c;就让我们一…

Lesson 41 Penny‘s bag

Lesson 41 Penny’s bag 词汇 cheese n. 奶酪&#xff0c;芝士&#xff0c;起司【不可数】 搭配&#xff1a;a piece of cheese 一片奶酪    big cheese 大人物    cheese cake 芝士蛋糕 bread n. 面包【不可数】 各种面点&#xff1a;cake n. 蛋糕      cup cak…

我给我的学校写了个校园墙小程序

目录 前言 正文 事先声明 项目介绍 关于Github的一些点 ①贡献值的记录 ②Github中的Project是什么 ③Release和Package有什么区别 ④开源许可证之间的区别 尾声 &#x1f52d; Hi,I’m Pleasure1234&#x1f331; I’m currently learning Vue.js,SpringBoot,Computer Securit…

QT项目实战:拼图小游戏

一、拼图智益-经典游戏&#xff08;开发环境&#xff09; 1&#xff1a;操作系统&#xff1a;Windows 10 x64专业版。 2&#xff1a;开发工具&#xff1a;Qt 5.12.8。 二、拼图智益-经典游戏&#xff08;功能模块&#xff09; 1&#xff1a;功能模块1&#xff1a;游戏启动…

虚拟机使用的是此版本 VMware Workstation 不支持的硬件版本

复制了同事的VMware镜像&#xff0c;但是他的软件版本和我的不同&#xff0c;于是乎出现了这个报错&#xff1a;虚拟机使用的是此版本 VMwareWorkstation 不支持的硬件版本。 模块“Upgrade”启动失败。 解决办法&#xff0c;直接改.vmx文件的版本信息&#xff1a; 以文本格式打…

为什么带货主播,他突然就不吃香了?

为什么带货主播他突然就不吃香了&#xff1f;工资骤降50%。 相比 2023 年初主播的平均薪资降了50%&#xff0c;那不管你是头部主播还是腰部主播&#xff0c;全部都降薪了。那尾部主播就更不用说了&#xff0c;有的主播他的时薪已经低到 20 块钱一个小时&#xff0c;还不如大学…

YOLOV8图像分割预测后输出mask图

训练一个yolov8后&#xff0c;用官方的预测脚本一般是&#xff1a; results model.predict(img_path, saveTrue, save_diroutput_folder) 运行此代码会直接在run里面生成一个文件夹&#xff0c;保存预测图像。如果要获取分割后的mask点&#xff0c;或mask的轮廓点&#xff0…

redis需要知道的点

目录 一、为什么要用缓存 二、使用 Redis有哪些好处 三、什么是 redis&#xff1f; 四、redis和memcached区别 五、为什么redis单线程模型效率也能那么高 六、redis的线程模型 七、redis 6.0 引入多线程 八、为什么Redis需要把所有数据放到内存中&#xff1f; 九、Red…

利用圆上两点和圆半径求解圆心坐标

已知圆上两点P1&#xff0c;P2&#xff0c;坐标依次为 ( x 1 , y 1 ) , ( x 2 , y 2 ) (x_1,y_1),(x_2,y_2) (x1​,y1​),(x2​,y2​)&#xff0c;圆的半径为 r r r&#xff0c;求圆心的坐标。 假定P1&#xff0c;P2为任意两点&#xff0c;则两点连成线段的中点坐标是 x m i …

【精选】数据治理项目实施(合集)05——解码“数据架构”,数据架构包含哪些内容?

上一篇讲到了数据治理项目的前期调研工作&#xff0c;继数据调研工作完成之后&#xff0c;就要开始关于治理工作的各项方案设计&#xff0c;整体方案设计包括数据架构、元数据、主数据、数据质量、数据安全、指标标签体系、数据生命周期管理和管理评价等内容。这一篇重点讲一下…

GIT-LFS使用

0.前言 目前git仓库有很多很大的文件需要管理&#xff0c;但是直接上传&#xff0c;每次clone的文件太大&#xff0c;所有准备使用git-lfs解决。 1、下载和安装 Git LFS 1.1、直接下载二进制包&#xff1a; Releases git-lfs/git-lfs GitHub 安装 Git LFS sudo rpm -ivh…

RabbitMQ基本概念

RabbitMQ是AMQP协议的一个开源实现&#xff0c;所以其基本概念也就是的 AMQP 协 议中的基本概念。如图3-1所示是 RabbitMQ 的整体架构图。 Message(消息):消息是不具名的&#xff0c;它由消息头和消息体组成。消息体是不透明的&#xff0c; 而消息头则由一系列可选属性组成&…

ROS1通信机制——以topic为例

ROS1 的通信机制 ROS1是一个分布式框架&#xff0c;为用户提供多节点&#xff08;进程&#xff09;之间的通信服务。 ROS1通信时有一个中心节点&#xff08;ROS Master&#xff09;&#xff0c;进行信息匹配等工作。 ROS1 的话题通信机制 通信链接&#xff1a;XML/RPC 信息传…

GMSB文章六:微生物SCFA关联分析

欢迎大家关注全网生信学习者系列&#xff1a; WX公zhong号&#xff1a;生信学习者Xiao hong书&#xff1a;生信学习者知hu&#xff1a;生信学习者CDSN&#xff1a;生信学习者2 介绍 微生物短链脂肪酸&#xff08;SCFAs&#xff09;是由肠道微生物发酵膳食纤维、抗性淀粉、低…

蒸汽架空管道中的关键守护者:滑动管托、导向管托与固定管托

蒸汽架空管道中的关键守护者&#xff1a;滑动管托、导向管托、固定管托与补偿器的重要角色在蒸汽架空管道系统中&#xff0c;每一个组件都扮演着不可或缺的角色&#xff0c;共同确保管道的安全、高效运行。今天&#xff0c;我们就来深入探讨滑动管托、导向管托、固定管托以及补…

信息安全时代,大学生是否有必要考取NISP证书?

在数字化浪潮席卷全球的今天&#xff0c;信息安全已成为国家、企业乃至个人都必须正视的重要议题。作为新时代的大学生&#xff0c;我们身处这个信息爆炸的时代&#xff0c;如何提升自己的信息安全素养&#xff0c;成为了一个值得深思的问题。而NISP(国家信息安全水平考试)证书…

单例模式(下)

文章目录 文章介绍步骤安排及单例讲解step1&#xff1a;注册单例类型&#xff08;main.cpp&#xff09;step2&#xff1a;定义类和私有构造函数&#xff08;keyboardinputmanager.h&#xff09;step3:&#xff08;keyboardinputmanager.cpp&#xff09;step4&#xff1a;在qml中…

云端智慧,赋能风电场:工业级控制系统云监控网关

风力发电场监控平台实现对风电场的运行状态和风机的实时数据进行监测、控制和管理&#xff0c;提高风电场的可靠性和运行效率&#xff0c;降低维护成本&#xff0c;实现智能化管理。 风机机组PLC、多功能仪表、无线测温、温度变送器、档位变送器、设备接入网关上传数据服务器。…