网页爬虫反扒措施有哪些?
爬虫之常见的反扒
cookies
一般用requests直接请求网址的时候有时候可能会遇到反扒措施,这时候可以考虑一下加上user-agent伪装成浏览器;也可能有登录限制,这时候cookies就有用处了
浏览器中的cookie是保存我们的账号数据和访问记录,在爬取的过程中加上cookie可以增加爬取数据的成功几率
获取cookies有两种方式,一种是requests 获取cookies ;一种是selenium获取cookies
1、requests获取cookies
自动登录原理:人工在浏览器上完成登录操作,获取登录之后的cookie信息,再通过代码发送请求的时候携带cookies信息
requests 获取cookies步骤:
浏览器打开网址——浏览器控制台——network——all——headers——cookie ——将cookies的值复制
import requests
headers = {'cookie':'.....'
}
resp=requests.get('https://www.zhihu.com/',headers=headers)
print(resp.text)
2、selenium获取cookies
获取自动登录网站的cookies
· 打开需要完成自动登录的网站(需要获取cookie的网站)
· 给足够长的时候让人工完成自动登录并且人工刷新出登录之后的页面
强调:一定要吧第一个页面刷新出登之后的转态
· 获取登录之后的cookie并且将获取到的cookie保存到本地文件
from selenium.webdriver import Chrome
from json import dumps
b = Chrome()
# 1. 打开需要完成自动登录的网站(需要获取cookie的网站)
b.get('https://www.taobao.com/')
# 2. 给足够长的时间让人工完成自动登录并且人工刷新出登录后的页面
# 强调:一定要把第一个页面刷新出登录之后的状态
input('已经完成登录:')
# 3. 获取登录后的cookie并且将获取到的cookie保存到本地文件
cookies = b.get_cookies()
print(cookies)
with open('file3/taobao.txt', 'w', encoding='utf-8') as f:f.write(dumps(cookies))
3、selenium使用cookies
· 打开需要自动登录的网站
· 添加cookies
· 重新打开需要登录的网页
from selenium.webdriver import Chrome
from json import loads
b = Chrome()
# 1. 打开需要自动登录网页
b.get('https://www.taobao.com/')
# 2. 添加cookie
with open('file3/taobao.txt', encoding='utf-8') as f:content = f.read()cookies = loads(content)
for x in cookies:b.add_cookie(x)
# 3. 重新打开需要登录的网页
b.get('https://www.taobao.com/')
代理ip
在爬取网站的过程中,因为频繁访问该网站,会出现ip被封情况,但是又必须获取该数据,可以用代理ip来访问该网站;分为两种情况,requests和selenium
1、requests 使用代理ip
获取代理ip的流程------省略
用法如下:
import requests
headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'}
# 两种proxies方式选择其一
# proxies = {
# 'http':'.....',
# 'https':'.....'
# }
proxies = {'http':'http://119.7.147.173:4531','https':'http://119.7.147.173:4531'
}
response=requests.get('https://movie.douban.com/top250',headers=headers,proxies=proxies)
print(response.text)
实际用法:
import requests
from time import sleep
def get_ip():url='获取代理ip的地址'while True:response=requests.get(url)if response.text[0]=='{':print('提取失败')continuesleep(1)return response.text
def get_douban():headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'}ip=get_ip()proxies = {'http': ip,'https':ip}response=requests.get('https://movie.douban.com/top250',headers=headers, proxies=proxies)print(response)
if __name__ == '__main__':get_douban()
2、selenium使用代理ip
from selenium.webdriver import Chrome,ChromeOptions
# 1、添加配置对象
options = ChromeOptions()
# 2、添加配置
options.add_argument('--proxy-server=http://代理ip')
# 3、通过指定配置创建浏览器对象
b=Chrome(options=options)
b.get(url) # url是我们需要访问的网址相关文章:
网页爬虫反扒措施有哪些?
爬虫之常见的反扒 cookies 一般用requests直接请求网址的时候有时候可能会遇到反扒措施,这时候可以考虑一下加上user-agent伪装成浏览器;也可能有登录限制,这时候cookies就有用处了 浏览器中的cookie是保存我们的账号数据和访问记录&#…...
C#实现批量生成二维码
相信大家都使用过草料二维码生成器,单独生成二维码可以,但是批量生成二维码就需要收费了。既然要收费,那就自己写一个。 接口采用导入Excel文件生成二维码,首先需要读取Excel的数据,方法如下所示: /// <…...
3种在ArcGIS Pro中制作山体阴影的方法
山体阴影可以更直观的展现地貌特点,表达真实的地形,这里为大家介绍一下在ArcGIS Pro中制作山体阴影的方法,希望能对你有所帮助。 数据来源 本教程所使用的数据是从水经微图中下载的DEM数据,除了DEM数据,常见的GIS数据…...
【ChatGLM2-6B】Docker下部署及微调
【ChatGLM2-6B】小白入门及Docker下部署 一、简介1、ChatGLM2是什么2、组成部分3、相关地址 二、基于Docker安装部署1、前提2、CentOS7安装NVIDIA显卡驱动1)查看服务器版本及显卡信息2)相关依赖安装3)显卡驱动安装 2、 CentOS7安装NVIDIA-Doc…...
输入两个整数,输出它们的乘积。 ← Python 及 C++ 代码比较
【题目描述】 输入两个整数,输出它们的乘积。【Python代码】 x,ymap(int,input().split()) print(x*y) 【C代码】 #include<bits/stdc.h> using namespace std;int x,y; int main() {cin>>x>>y;cout<<x*y<<endl;return 0; }/* in:…...
C语言——从键盘输人一个表示年份的整数,判断该年份是否为闰年,并显示判断结果。
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int year 0;printf("请输入年份:");scanf("%d",&year);if((year%4 0) && (year%100!0) || (year%400 0)){printf("%d是闰年\n",year);}else{p…...
出于隐私和安全的考虑,有时需要从谷歌删除你的个人数据,有两种方法
如果你是公众人物、企业或拥有个人品牌的人,那么拥有在线形象很重要。然而,你可能会发现,通过谷歌搜索,陌生人可以获得你的个人信息,如联系方式、地址和财务信息,这会让你感到不安。 幸运的是,…...
【同一局域网下】两台电脑之间互ping
两台电脑互ping 首先需要连接同一网咯关闭需要ping的电脑的防火墙 关闭防火墙步骤(以win11系统为例): 设置 --> 隐私和安全性 --> Windows 安全中心 打开Windows安全中心 防火墙和网络保护 --> 选择正在使用的网络 关闭 ping其他…...
【精选】Ajax技术知识点合集
Ajax技术详解 Ajax简介 Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建 交互式、快速动态应用的网页开发技术,无需重新加载整个网页的情况下,能够更新页面局 部数据的技术。通过在…...
智能优化算法应用:基于水循环算法无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于水循环算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于水循环算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.水循环算法4.实验参数设定5.算法结果6.参考文献7.…...
java-netty知识点笔记和注意事项
如何获取ctx的id 使用ctx.ctx.toString()就可以了 public void channelRead(ChannelHandlerContext ctx, Object msg) {//传来的消息包装成字节缓冲区String byteBuf (String) msg; // ByteBuf byteBuf (ByteBuf) msg;//Netty提供了字节缓冲区的toString方法ÿ…...
英伟达不同系列GPU介绍
英伟达有以下几个系列的产品线,并介绍它们的特点和主要应用领域: 1. GeForce系列(G系列): - 特点:GeForce系列是英伟达主打的消费级GPU产品线,注重提供高性能的图形处理能力和游戏特性。它们…...
C语言——I /深入理解指针(二)
一、数组名的理解 int arr[10] {1,2,3,4,5,6,7,8,9,10}; int *p &arr[0];这⾥我们使⽤ &arr[0] 的⽅式拿到了数组第⼀个元素的地址,但是其实数组名本来就是地址,⽽且 是数组⾸元素的地址,我们来做个测试。 #include <stdio.…...
MySQL使用函数和存储过程实现:向数据表快速插入大量测试数据
实现过程 1.创建表 CREATE TABLE user_info (id INT(11) NOT NULL AUTO_INCREMENT,name VARCHAR(20) DEFAULT NULL,age INT(3) DEFAULT NULL,pwd VARCHAR(20) DEFAULT NULL,phone_number VARCHAR(11) DEFAULT NULL,email VARCHAR(255) DEFAULT NULL,address VARCHAR(255) DEF…...
力扣labuladong——一刷day59
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣549. 二叉树中最长的连续序列二、力扣1325. 删除给定值的叶子节点 前言 像求和、求高度这种基本的二叉树函数很容易写,有时候只要在它们的后…...
接口性能测试 —— Jmeter并发与持续性压测
接口压测的方式: 1、同时并发:设置线程组、执行时间、循环次数,这种方式可以控制接口请求的次数 2、持续压测:设置线程组、循环次数,勾选“永远”,调度器(持续时间),这种…...
redis报错3
INFO: Initializing SpringDispatcherServletdispatcherServlet...
Proteus的网络标号与总线
Proteus为了减少过多、复杂的连线,可以使用网络标号与总线配合使用。 Proteus的导线上添加了网络标号,意味着在Proteus上相同的网络标号是连在一起的,所说在图纸上看不出来。 如下图是比较好的Proteus中使用总线的绘制的图纸。可以效仿着画…...
4、stable diffusion
github 安装anaconda环境 conda env create -f environment.yaml conda activate ldm安装依赖 conda install pytorch1.12.1 torchvision0.13.1 torchaudio0.12.1 cudatoolkit11.3 -c pytorch pip install transformers4.19.2 diffusers invisible-watermark pip install -e…...
LeetCode51. N-Queens
文章目录 一、题目二、题解 一、题目 The n-queens puzzle is the problem of placing n queens on an n x n chessboard such that no two queens attack each other. Given an integer n, return all distinct solutions to the n-queens puzzle. You may return the answe…...
告别手动排版:Illustrator智能填充工具提升设计效率指南
告别手动排版:Illustrator智能填充工具提升设计效率指南 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 问题:设计师为何困在重复劳动中? 为什么…...
3步构建安全可靠的用户脚本生态系统:Greasy Fork深度技术解析
3步构建安全可靠的用户脚本生态系统:Greasy Fork深度技术解析 【免费下载链接】greasyfork An online repository of user scripts. 项目地址: https://gitcode.com/gh_mirrors/gr/greasyfork Greasy Fork作为开源的用户脚本平台,基于Ruby on Rai…...
XPay项目结构深度解析:Maven多模块架构与支付系统最佳实践
XPay项目结构深度解析:Maven多模块架构与支付系统最佳实践 【免费下载链接】xpay XPay个人免签收款支付系统 完全免费 资金直接到达本人账号 支持 支付宝 微信 QQ 云闪付 无需备案 无需签约 无需挂机监控APP 无需插件 无需第三方支付SDK 无需营业执照身份证 只需收款…...
GTE-Chinese-Large镜像免配置实战:从启动到API调用的全流程详细步骤
GTE-Chinese-Large镜像免配置实战:从启动到API调用的全流程详细步骤 1. 镜像概述与核心价值 GTE-Chinese-Large是阿里达摩院推出的专门针对中文场景优化的文本向量化模型。这个镜像最大的特点就是开箱即用——所有依赖环境、模型文件、Web界面都已经预先配置好&am…...
【nginx】深入解析net::ERR_CONTENT_LENGTH_MISMATCH 200:权限配置与日志排查实战
1. 错误现象与初步诊断 当你用浏览器访问Nginx托管的网站时,突然看到控制台报错net::ERR_CONTENT_LENGTH_MISMATCH 200,但页面居然还能正常显示部分内容,这种情况是不是很诡异?我第一次遇到时也是一头雾水。这个错误表面看是内容长…...
Qwen3-14B镜像快速入门:内置模型+完整环境,开箱即用教程
Qwen3-14B镜像快速入门:内置模型完整环境,开箱即用教程 1. 为什么选择Qwen3-14B镜像 在AI模型部署过程中,环境配置往往是最耗时的环节。传统部署方式需要手动安装CUDA、PyTorch、模型权重等数十个组件,版本兼容性问题频发&#…...
沃虎电子|千兆网络变压器选型实战:从PoE等级到PHY匹配,一站式解决工程师的三大难题
在工业以太网、安防监控、光伏储能、无线AP等场景全面爆发的今天,千兆网络变压器已成为硬件设计中不可或缺的关键一环。然而,选型过程中的“隐形陷阱”——PoE供电不稳、封装温度错配、PHY芯片接法错误——却频频导致设备掉电、通信故障甚至批量召回。 …...
Git从入门到精通:必备命令全指南
git 初始化与配置设置全局用户名和邮箱,用于标识提交者信息。 git config --global user.name "Your Name" git config --global user.email "your.emailexample.com"初始化新仓库,将当前目录转为Git托管项目。 git init克隆远程仓库…...
物联网新手避坑指南:用MQTT.fx 1.7.1连接OneNET平台,从数据上报到命令下发的完整流程
物联网开发实战:MQTT.fx与OneNET平台深度对接指南 第一次打开MQTT.fx时,面对密密麻麻的配置项和晦涩的协议术语,大多数物联网初学者都会感到无从下手。这就像刚拿到驾照就让你开F1赛车——工具很强大,但学习曲线陡峭。本文将带你用…...
YA-Wiegand:轻量级事件驱动Wiegand协议解析库
1. 项目概述Yet Another Arduino Wiegand Library(以下简称 YA-Wiegand)是一个专为嵌入式平台设计的轻量级、事件驱动型 Wiegand 协议解析库。它并非简单封装硬件抽象层,而是聚焦于协议语义层的健壮性实现——在不依赖特定 MCU 外设ÿ…...
