爬虫--09:反爬机制

关于爬虫反爬机制处理方法(整合) 常见得反爬机制及解决办法 1、针对请求头做出得反爬 简介:网站通过去检查headers中的User-Agent字段来反爬,如果我们没有设置请求头,那么headers默认是python这样就会出现访问失败、没有权限等原因,如果去伪造一个请求头是可以避开得,不过如果短时间内频繁使用同一个User-Agent访问可能会被检测出来导致被封掉爬虫 解决办法:通过fake_useragent构造随机请求头 第一步:下载fake_useragent 可以直接在cmd当中输入: pip install.. 阅读详情

一、ua反爬

  • 爬虫中非常重要的一种反反爬策略
  • user-agent 用户代理
  • Fake_useragent模块
  • 安装Fake_useragent模块
pip install fake_useragent
  • 随机ua的使用
ua = UserAgent()
s = ua.random
print(s)

二、IP反爬

1、相关网址

2、ip反爬

  • 有些网站会检测ip在同一时间内的访问次数,如果过于频繁,会封禁当前ip
  • 解决办法:设置代理ip
    • 在requests模块中,有一个参数proxies来设置代理ip
    • 相关代理ip网站上的免费ip不好使
    • 付费的代理ip不会用
    • 通过cmd(windows)命令行内输入ipconfig来查看电脑的内部的ip地址
    • 查看上网IP:使用IPIP网站查看电脑的上网IP
  • 推荐代理网站
import random

import requests


# 设置代理
# proxy = {
#     'http':'114.98.162.196:9999'
# }
# url = 'http://www.httpbin.org/ip'
# res = requests.get(url, proxies=proxy)
# print(res.text)

ips = [
('223.240.244.48:23564'),
('121.233.226.191:5412'),
('114.100.3.87:766'),
('58.219.59.76:5412'),
('180.113.10.47:894'),
('27.40.111.110:36410'),
('42.56.3.242:766'),
('180.113.12.163:5412'),
('113.237.243.46:3617'),
('58.219.59.129:36410'),
('223.240.242.44:5412'),
('117.60.239.133:5412'),
('114.97.199.48:3617'),
('163.179.204.157:3617'),
('180.125.97.143:894'),
('60.174.190.152:23564'),
('49.86.177.230:36410'),
('182.101.237.158:5412'),
('114.98.139.136:23564'),
('114.225.241.237:23564'),
]
url = 'http://www.httpbin.org/ip'
for i in range(20):
    try:
        ip = random.choice(ips)
        res = requests.get(url, proxies={'http':ip}, timeout=0.5)
        print(res.text)
    except Exception as e:
        print('出现错误!',e)
import requests
url = 'http://www.httpbin.org/ip'
proxies = {
    'http': 'http://1550023517:8ktcozrp@114.215.174.98:16817',
    'https': 'http://1550023517:8ktcozrp@114.215.174.98:16817'
}

result = requests.get(url, proxies=proxies)
print(result.text)
  • 开放代理
import requests


class ProxyPool():

    def __init__(self):
        self.proxy_url = 'http://dev.kdlapi.com/api/getproxy/?orderid=992045485987175&num=100&protocol=2&method=1&an_ha=1&sep=2'
        self.test_url = 'https://www.baidu.com/'
        self.headers = {
            'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_3_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'
        }

    def get_prosy_pool(self):
        html = requests.get(url=self.proxy_url, headers=self.headers).text
        proxy_list = html.split('\n')
        # print(proxy_list)
        for prosy in proxy_list:
            self.test_proxy(prosy)

    def test_proxy(self, prosy):
        proxies = {
            'http':'{}'.format(prosy),
            'https':'{}'.format(prosy)
        }
        try:
            res = requests.get(url=self.test_url, proxies=proxies, headers=self.headers, timeout=1)
            if res.status_code == 200:
                print(prosy,'可以用!')
        except Exception as e:
            print(prosy,'不能用!')

    def main(self):
        self.get_prosy_pool()


if __name__ == '__main__':
    spider = ProxyPool()
    spider.main()

三、图形验证码反扒

1、解决办法

  • 通过算以及深度学习解决
  • tesseracct解决
    • 阻碍我们爬虫的有时候正式在登陆过或者请求 一些数据时候的图形验证码。因此我们需要一种可以将图片翻译成文字的技术。将图片翻译成文字一般称为光学文字识别(Optical Character Recognition),简称OCR。实现OCR的开源运行库不多。因为存在一些技术壁垒(需要大量的数据、算法、机械学习、深度学习知识等),如果做的很好,就具有很高的商业价值。因此开源的比较少。这里介绍一种优秀的图像识别开源库:Tesseract.
      • Tesseract是一个将图像翻译成文字的OCR(光学文字识别,Optical Character Recognition),目前由谷歌赞助。Tesseract是目前公认最优秀、最准确的开源OCR库。Tesseract具有很高的识别度,也具有很高的灵活性,他可以通过训练识别任何字体
      • Windows系统安装 在以下链接下载可执行文件,https://github.com/tesseract-ocr/
  • 打码平台
  • selnium模拟处理

2、tesseract 的使用

安装

  • 将安装的路径添加到path环境变量内
  • 需要把训练的数据添加到用户变量内
  • 安装模块
  pip install pytesseract
  • 使用
    • tesseract demo.jpg text
    • demo.jpg是识别的图片
    • text是返回的结果
import pytesseract
from PIL import Image # 图像处理库


pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files (x86)\Tesseract-OCR\tesseract.exe' # 指定tesseract驱动

tessdata_dir_config = r'--tessdata-dir "C:\Program Files (x86)\Tesseract-OCR\tessdata"' # 指定tesseract训练数据路径

image = Image.open('a.jpg')
print(pytesseract.image_to_string(image, lang='eng',  config=tessdata_dir_config))

3、复杂验证码图片

  • 1.行为验证反爬(例如滑块验证码图片)
    • 解决方法:selenium内的鼠标行为链
    • 思路:
      • 找到一个固定的点,例如150然后一次一次的拖动尝试,直到图片和缺口吻合
        QQ空间滑块验证码代码演示
from selenium import webdriver
import time
from selenium.webdriver import ActionChains


driver = webdriver.Chrome()


def login():
    driver.get('https://i.qq.com/')
    time.sleep(3)
    # 切换iframe
    driver.switch_to_frame(driver.find_element_by_id('login_frame'))
    # 切换登陆方式
    driver.find_element_by_id('switcher_plogin').click()
    time.sleep(3)
    # 输入账号和密码
    driver.find_element_by_id('u').send_keys('1550023517')
    time.sleep(3)
    driver.find_element_by_id('p').send_keys('wangjiaxin.....')
    time.sleep(3)
    driver.find_element_by_id('login_button').click()
    time.sleep(3)
    # 创建鼠标行为链对象
    actions = ActionChains(driver)
    # 切换ifame
    driver.switch_to_frame(driver.find_element_by_id('tcaptcha_iframe'))
    # 偏移量
    x = 160
    # 按下拖动
    while True:
        try:
            # 定位拖动按钮
            tcaptcha_drag_thumb = driver.find_element_by_id('tcaptcha_drag_thumb')
            # 按下拖动
            actions.drag_and_drop_by_offset(tcaptcha_drag_thumb, xoffset=x, yoffset=0).perform()
            x += 5
        except Exception:
            break


login()
  • 2.12306图片验证码的解决
    • 打码平台的使用:超级鹰
      • 1 注册账号
      • 2 重置
      • 3 创建软件ID,点击生成软件ID
      • 4 下载开发文档实例代码
    • 实现步骤
      • 目标url:12306
      • 核心技术:selenium+鼠标行为链
      • 思路:
        • 1 通过selenium加载整个页面
        • 2 获取验证码图片
        • 3 将图片提交给超级鹰
        • 4 返回验证码图片的结果(识别结果就是一个或者多个图片的坐标值)
        • 5 通过坐标值,来进行正确的点击
      • 第一步:selenium加载整个页面
      • 第二步:对页面进行保存
      • 第三步:截取12306验证码图片
      • 第四步:交给超级鹰进行识别,返回正确的坐标值
      • 第五步:根据正确的坐标值进行点击动作

12306图片验证码登陆代码演示

import requests
from hashlib import md5
from selenium import webdriver
import time
from selenium.webdriver import ActionChains
from PIL import Image


class Chaojiying_Client(object):

    def __init__(self, username, password, soft_id):
        self.username = username
        password =  password.encode('utf8')
        self.password = md5(password).hexdigest()
        self.soft_id = soft_id
        self.base_params = {
            'user': self.username,
            'pass2': self.password,
            'softid': self.soft_id,
        }
        self.headers = {
            'Connection': 'Keep-Alive',
            'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',
        }

    def PostPic(self, im, codetype):
        """
        im: 图片字节
        codetype: 题目类型 参考 http://www.chaojiying.com/price.html
        """
        params = {
            'codetype': codetype,
        }
        params.update(self.base_params)
        files = {'userfile': ('ccc.jpg', im)}
        r = requests.post('http://upload.chaojiying.net/Upload/Processing.php', data=params, files=files, headers=self.headers)
        return r.json()

    def ReportError(self, im_id):
        """
        im_id:报错题目的图片ID
        """
        params = {
            'id': im_id,
        }
        params.update(self.base_params)
        r = requests.post('http://upload.chaojiying.net/Upload/ReportError.php', data=params, headers=self.headers)
        return r.json()


# if __name__ == '__main__':
# 	chaojiying = Chaojiying_Client('15840039263', 'wangjiaxin.....', '916503')	#用户中心>>软件ID 生成一个替换 96001  # 	916503
# 	im = open('code2.png', 'rb').read()													#本地图片文件路径 来替换 a.jpg 有时WIN系统须要//
# 	print(chaojiying.PostPic(im, 9004)['pic_str'])

drvier = webdriver.Chrome()
# 加载页面
drvier.get('https://kyfw.12306.cn/otn/resources/login.html')
time.sleep(3)
# 切换登陆方式
drvier.find_element_by_xpath('/html/body/div[2]/div[2]/ul/li[2]/a').click()
time.sleep(3)
drvier.maximize_window()
time.sleep(3)
drvier.find_element_by_id('J-userName').send_keys('15840039263')
time.sleep(3)
drvier.find_element_by_id('J-password').send_keys('Wjx19972')
time.sleep(3)

# 保存加载后的页面
drvier.save_screenshot('code.png')
# 定位图片
cod_img_element = drvier.find_element_by_class_name('imgCode')
location = cod_img_element.location  # location的返回值是一个字典(是图片左上角的坐标值)
size = cod_img_element.size # size就是图片的宽度和高度

# 获取左上角和右下角的坐标
rangle = (int(location['x']), int(location['y']), int(location['x']+size['width']), int(location['y']+size['height']))

# 12306验证码图片的裁剪
i = Image.open('code.png')
code_img_name = 'yzm.png'
frame = i.crop(rangle) # crop() 根据指定的区域进行裁剪
frame.save(code_img_name)


# 将验证码土图片交给超级鹰进行识别
chaojiying = Chaojiying_Client('15840039263', 'wangjiaxin.....', '916503')	#用户中心>>软件ID 生成一个替换 96001  # 	916503
im = open('yzm.png', 'rb').read()													#本地图片文件路径 来替换 a.jpg 有时WIN系统须要//
print(chaojiying.PostPic(im, 9004)['pic_str'])

result = chaojiying.PostPic(im, 9004)['pic_str']
all_list = [] # 存储被点击的坐标 [[x,y],[x,y]]
if '|' in result: # 点击多次
    lst1 = result.split('|') # split()分割方法
    count1 = len(lst1)
    for i in range(count1):
        xy_list = []
        x = int(lst1[i].split(',')[0])
        y = int(lst1[i].split(',')[1])
        xy_list.append(x)
        xy_list.append(y)
        all_list.append(xy_list)
else: # 点击一次
    xy_list = []
    x = int(result.split(',')[0])
    y = int(result.split(',')[1])
    xy_list.append(x)
    xy_list.append(y)
    all_list.append(xy_list)

# 对列表元素中的xy进行点击
for l in all_list:
    x = l[0]
    y = l[1]
    # 将参照物移动到验证码图片上,进行点击
    ActionChains(drvier).move_to_element_with_offset(cod_img_element, x, y).click().perform()
    time.sleep(5)
drvier.find_element_by_id('J-login').click()

总结

1、打码平台的使用
* 1、注册账号
* 2、充值
* 3、创建软件id、点击生成软件ID
* 4、下载开发文档实例代码
2、鼠标行为链的使用
http://selenium-python.readthedocs.io/api.html
特殊使用的方法
# 定位图片
cod_img_element = drvier.find_element_by_class_name('imgCode')
location = cod_img_element.location  # location的返回值是一个字典(是图片左上角的坐标值)
size = cod_img_element.size # size就是图片的宽度和高度

# 获取左上角和右下角的坐标
rangle = (int(location['x']), int(location['y']), int(location['x']+size['width']), int(location['y']+size['height']))

# 将参照物移动到验证码图片上,进行点击
    ActionChains(drvier).move_to_element_with_offset(cod_img_element, x, y).click().perform()
    time.sleep(5)

4、字体反爬

  • 字体反扒也称之为CSS反爬
    • 这个字体是隐藏在我们CSS文件中的一个.ttf文件中
  • 字体反爬的原理
    • 开发者创建了一种字体代号,在网页中就显示的这种字体代号
  • 如何解决
    • 1、先找到.ttf文件
    • 2、转换成其他格式的文件(例如:xml文件)
    • 3、分析xml文件(推荐使用工具:FontCreator)
    • 4、找出字体对应的映射关系和真事字体进行替换

案例演示

需求:
爬取论坛内的文本
目标url:https://club.autohome.com.cn/bbs/thread/16299a4708f8bb7f/96134998-1.html
总结:

font = TTFont('wKgHFVsUz2eAJ12kAABj8AY7vEo97..ttf')
font.saveXML('fonts.xml')

# 构建编码列表,获取xml文件当中的name的值 找到映射关系
uni_list = []
unilist = font.getGlyphOrder()
for i in unilist[1:]:
    # r = r'\u' + i[3:]
    r = eval(r"'\u" + i[3:] + "'")
    uni_list.append(r)

# 替换
work_list = ['七', '更', '一', '高', '和', '近', '的', '下', '三', '低', '很', '五', '十', '右', '左', '少', '呢', '多', '大', '着', '九', '是', '二', '坏', '地', '长', '上', '矮', '了', '不', '短', '远', '六', '八', '四', '得' ,'好' ,'小']
for i in range(len(work_list)):
    content_str = content_str.replace(uni_list[i],work_list[i])
print(content_str)
    

代码演示

import requests
from lxml import etree
from fontTools.ttLib import TTFont #

url = 'https://club.autohome.com.cn/bbs/thread/16299a4708f8bb7f/96134998-1.html'
headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36'
    }
res = requests.get(url=url, headers=headers)
res_html = res.text

html = etree.HTML(res_html)
content_list = html.xpath('//div[@class="tz-paragraph"]//text()')
# 将列表中的数据以空格链接数据
content_str = ''.join(content_list)
# print(content_str)

font = TTFont('wKgHFVsUz2eAJ12kAABj8AY7vEo97..ttf')
font.saveXML('fonts.xml')

'''
构建一个编码的列表
构建一个字体的列表
编码与字体一一对应(映射关系)
'''

# 构建编码列表,获取xml文件当中的name的值
uni_list = []
unilist = font.getGlyphOrder()
for i in unilist[1:]:
    # r = r'\u' + i[3:]
    r = eval(r"'\u" + i[3:] + "'")
    uni_list.append(r)
# print(uni_list)
'''
eval()用来执行的是一个字符串表达式,并返回表达式的的值
可以把字符串转化成列表、元组、字典
'''
work_list = ['七', '更', '一', '高', '和', '近', '的', '下', '三', '低', '很', '五', '十', '右', '左', '少', '呢', '多', '大', '着', '九', '是', '二', '坏', '地', '长', '上', '矮', '了', '不', '短', '远', '六', '八', '四', '得' ,'好' ,'小']
for i in range(len(work_list)):
    content_str = content_str.replace(uni_list[i],work_list[i])
print(content_str)

5、JS反爬

1.环境搭建

2.安装js代码调试工具

  • 发条js调试工具

3. 安装PyExecJs模块

pip install PyExecJs -i https://pypi.douban.com/simple
爬虫进阶 -- 爬虫相关定义、反爬机制及其破解 经历了好几个小爬虫项目的“摧残”,我想着不能白做,于是有了这篇文章。 什么是爬虫和反爬虫 爬虫:使用任何技术手段,批量获取网站信息的一种方式。 反爬虫:使用任何技术手段,阻止别人批量获取自己网站信息的一种方式。 Headers相关概念 阅读详情

相关推荐

互联网防反爬机制的六种反爬技术大解析

目录 前言 反爬虫 仔细分析这七种反爬技术 1、user-agent 2、验证码 3、封IP 4、关联请求上下文 5、JavaScript 参与运算 6、提高数据获取成本 前言 ​ 互联网时代,无论在工作上,还是生活上都离不开网络,而网络能给我们带来什么? ​ 新闻,小说,资料,各行业的数据或者报表等等; ​ 比如:快毕业了为了论文,在各种网站上爬取需要的数据进行分析;还有一些为了兴趣爱好,爬取各种类型的图片,视频,文章,数据等。 ​ 各网站的开发人员为了约束这种行为,开始绞尽脑

公众号:白又白学Python 1万+

爬虫-网站地址及反爬机制

爬虫-网站地址及反爬机制 1.安居客:https://cd.zu.anjuke.com/fangyuan/wuhou/x1/ - requests 2.贝壳找房:https://cd.zu.ke.com/zufang/#contentList - requests 3.腾讯视频:https://v.qq.com/ - 字体反爬 4.酷狗音乐:https://www.kugou.com/ - requests 5.起点小说:https://www.qidian.com/ - 待定(看不懂) 6.抖音视

qq_44981522的博客 2732

Selenium实战:从零搭建微博热搜爬虫,破解动态渲染与反爬机制

在数据采集领域,动态网页因其内容依赖JavaScript实时渲染,给传统爬虫带来了挑战。其核心原理在于浏览器执行JS代码后生成完整的DOM树,而静态请求无法获取这部分动态内容。为解决此问题,Selenium等浏览器自动化工具应运而生,它们通过驱动真实浏览器,完整执行页面逻辑,从而获取渲染后的数据,在舆情监控、市场分析等场景中价值显著。本文聚焦于微博热搜这一典型动态页面,详细阐述了如何利用Selenium模拟真实用户行为,结合显式等待、元素定位等关键技术,并针对请求头检测、行为模式识别等反爬机制,给出了伪装U

weixin_34161032的博客 629

爬虫策略——反爬机制

伪装、代理池、验证码识别、以及动态页面渲染处理等技术,开发者可以有效绕过大多数反爬措施,实现稳定的数据抓取。现代网站通常会使用多种反爬手段来限制爬虫访问数据。了解这些机制并针对性地制定绕过策略,是构建高效爬虫的关键。许多动态网站通过 JavaScript 加载内容,而直接请求可能无法获得完整的 HTML 数据。验证码是最常见的反爬手段,用于验证用户的真实性,防止自动化请求。通过模拟用户的操作(如点击、滚动、延迟)绕过反爬机制。通过代理池轮换 IP 是应对 IP 封禁的常用手段。网站通常会通过检查请求中的。

好看资源网的博客 3657

Python爬虫如何通过TLS指纹模拟绕过Cloudflare等反爬验证

在网络爬虫开发中,TLS握手是客户端与服务器建立加密连接的关键步骤。其原理在于,客户端在ClientHello报文中会携带TLS版本、加密套件列表和扩展等信息,这些信息的组合形成了唯一的TLS指纹(如JA3哈希)。这项技术的价值在于,它是现代Web应用防火墙(WAF)和反爬系统识别自动化脚本的核心依据。当爬虫使用标准库(如requests)时,其默认的TLS指纹特征与真实浏览器(如Chrome、Firefox)存在显著差异,极易触发防护机制,导致请求被拦截并返回“Just a moment...”等质询页面

蓝色妖姬 537

Python爬虫实战指南:从基础到进阶,应对反爬与工程化实践

网络爬虫是一种自动化抓取网页信息的程序,其核心原理是模拟浏览器发送HTTP请求、获取响应、解析HTML并提取结构化数据。这项技术对于数据采集、市场分析和学术研究具有重要价值,广泛应用于舆情监控、价格追踪和内容聚合等场景。在工程实践中,开发者常需应对反爬机制,如User-Agent检测和IP频率限制,并采用Selenium处理动态内容。本文以豆瓣电影Top250为例,系统讲解Python爬虫从环境搭建、数据解析到存储的完整流程,涵盖Requests、BeautifulSoup等核心库的使用,以及异常处理和日志

weixin_33845881的博客 431

python爬虫常见反爬措施

  1.IP封锁  常见网站反爬虫首先考虑到会不会对用户产生误伤,举个例子,在校园网内,有台机器对网站持续高频繁产生请求,校园网涉及用户过多,但是如果封锁IP那么会对校园中的用户产生误伤,丧失了许多用户量,就拿某宝那么大的公司来说,不到万不得已时,不会对IP进行长时间或者进行封锁。  解决方案:  1.采用修改程序访问频率  可以使用  #引入impor time#休息两秒time.sleep(2...

weixin_34029949的博客 1999

Python Selenium动态网页爬虫实战:从环境搭建到反爬策略

网络爬虫是自动化获取网页数据的关键技术,其核心原理在于模拟浏览器请求并解析响应内容。对于静态网页,传统的HTTP请求库即可胜任;然而,当面对由JavaScript动态渲染生成内容的现代网站时,常规方法往往失效,这就需要引入浏览器自动化技术。Selenium作为主流的浏览器自动化工具,其技术价值在于能够驱动真实浏览器(如Firefox)执行点击、滚动、输入等交互操作,完整地加载并渲染页面,从而获取最终呈现的动态数据。这一技术尤其适用于处理基于Ajax、Vue、React等框架构建的电商商品列表、社交媒体信息流

weixin_34218890的博客 546

爬虫中常见的问题,常见的反爬机制

这个我不知道你们遇到过没,我有一次抓某个网站,它就是为了防止我这类瞎jb搞的人分析它的代码,分析它的请求过程,所以当我一打开调试工具,就触发它的监听器,然后我就发现我电脑的CPU立马跑满了,一直在消耗我的电脑资源直到电脑卡死,所以我只能感觉关闭调试工具或者关闭浏览器,实在不行只能重启了,它就是监听的debuger,我不知道这个是一个函数还是一个类,以下是我保存的代码,看有缘人能不能看懂,看懂的话我就以…此处省略1111个字。嘿嘿,刚说完requests很强大,马上说它的弊端,是的,就是这么骚气。

Zsanfeng的博客 1854

Cisco 路由器 打环测试教程

环 回测试是很常用的一种测试,通常用于检查和分析端口或线路问题。如下图所示,我们在设备端口上用命令loopback(某些端口上命令格式为 loopback diagnostic)使接口从内部将自己发送的信号转接到自己的接收端(如红线所示),通过检查数据发送和接收的情况来判断端口工作状态是否正常。如果 需要对端口进行完全的检测,可以使用符合标准的短跳线将端口收发短接构成环...

weixin_34304013的博客 2024

如何在软件复位后保留指定RAM区域的数据

本文主要介绍S32K144的RAM retention功能

北极熊的脖子(16605192620@163.com) 1万+

Python网络爬虫实践:构建实用的爬虫应用

当然,爬虫并非万能钥匙,它也有局限性。因此,在享受爬虫带来的便利的同时,我们也需要遵守规则,合理利用。想象一下,当你需要了解某个行业的趋势时,如果能快速获取到相关的新闻报道、用户评论甚至是社交媒体上的讨论,将会是多么高效的一件事。你可以把这里当作自己的家,无论是工作之余的小憩,还是寻找灵感的驿站,我都希望你能在这里找到属于你的那份快乐和满足。尊重网站的所有权,不抓取隐私数据,不侵犯他人的知识产权,这些都是基本的道德准则。

master_chenchen的博客 1937

TEC控制器芯片 ADN8835 中文数据手册

ADN8835是一款高集成度的单芯片TEC控制器。它包括线性电压调节模块脉冲宽度调制(PWM) 电压调节模块和两个零漂移、轨到轨斩波放大器。线性控制器和PWM驱动器用于控制H桥配置中的内部功率MOSFET。通过测量热传感器反馈电压,并使用集成的运算放大器作为比例-积分-微分(PID)补偿器来调理信号,ADN8835通过TEC驱动电流,将连接至TEC模块的激光二极管或无源组件的温度稳定到编程的目标温度。

lu2289504634的博客 9538

Python网络爬虫实战(一)快速入门

我们编写网络爬虫主要目的是爬取想要的数据和通过爬虫去自动完成我们想在网站中做的一些事情。那么如何编写Python网络爬虫?遇到具有反爬,加密的网站,爬虫拿不到数据,以及登录验证等问题如何解决呢?不如一起来看看吧! 先来看一段简单的代码。 import requests #导入requests包 url = 'https://www.cnblogs.com/LexMoon/' str...

lamehd的博客 191

【项目实战】Qt6 录制屏幕、录制声音生成MP4、AVI、MA3等(完整源码,可直接编译使用)

本文将详细介绍如何利用Qt6多媒体模块中的QMediaCaptureSession、QMediaRecorder、QScreenCapture、QAudioInput、QMediaFormat等功能,实现对屏幕和声音的录制,并生成常见的媒体格式文件,如MP4、AVI、MA3等。我们将探讨如何利用这些功能来实现灵活的视频和音频参数设置,以满足不同需求下的录制和生成要求。我们将重点讨论如何配置视频和音频参数,包括分辨率、帧率、编解码器选择、音频采样率、声道设置等。

yegu001的博客 4939

再见 n8n?Google Opal 实测:一句话生成 APP,这才是 AI 的正确打开方式!

Google Opal深度评测:这款自然语言生成工作流的AI工具,通过三个实战案例(科技早报生成器、冰箱食谱助手、爆款文案转译机)展示了其零代码开发的强大能力。它凭借Gemini 3.0 Pro和Google生态的无缝集成,将自动化门槛降至新低,预示着一个“意图驱动开发”的新时代。

莫潇羽的个人博客 848

用python notebooks 安装selenium_Selenium Chrome Driver之反爬监测

@Date : 2018-09-03@Author : lmingzhi (lmingzhi@gmail.com)[TOC]0.前言1.CentOS安装mitmproxy1.1.使用linux已编译好的二进制包step0. 参考资料step1. 下载链接step2. 具体实现1.2.conda安装mitmproxy >>>> 另一种选择1.3.CentOS Linu...

weixin_39540426的博客 962

如何在TRAE(国际版)中搭建ESP-IDF环境以及怎么使用ESP-IDF插件编译烧录到ESP32s3中

点击进入,再点击ESPRESSIF中的EXPRESS,这里会下载ESP-IDF所需要的全部工具和包等等。首先我们从终端中进入项目所在的目录中,我的项目在E盘下的jikecode\esp32s3-client中,我就进入这个目录下。,因为我的项目是针对ESP32-S3进行开发的,所以这里的芯片型号是esp32s3,大家根据各自芯片的型号来输入。执行了这个命令后,ESP-IDF会自动配置与ESP-S3相关的编译选项,生成对应芯片的配置文件。进入第一个ESP-IDF插件,进行安装,注意安装的是。

一个爱折腾技术的普通人,分享踩过的坑、学到的干货。 1504

Scrapling:让Python网络爬虫变得简单高效的开源框架

面对复杂的反爬虫机制和频繁变化的网站结构,你是否还在为编写和维护爬虫代码而头疼?Scrapling是一个智能的Python网络爬虫框架,它能够自动适应网站变化,轻松绕过反爬虫检测,让你专注于数据提取而不是技术细节。无论你是数据科学家、开发者还是业务分析师,Scrapling都能提供优雅的解决方案。 **核心关键词**:Python网络爬虫、Scrapling框架 **长尾关键词**:智能元素

gitblog_00162的博客 494

基于STM32开发板的USB MIDI键盘实现

在本文中,我们介绍了如何使用STM32开发板和相应的软件工具来实现USB MIDI键盘。通过配置STM32CubeMX和编写相应的源代码,我们能够将STM32开发板转换为一个功能齐全的USB MIDI设备。我们将使用STM32开发板和相应的软件工具来实现这一功能,并提供相应的源代码供参考。此时,您应该可以使用STM32开发板作为USB MIDI键盘,并在按键按下时听到相应的音符。在STM32CubeMX中,选择适当的STM32型号,并启动一个新的项目。然后,将生成的可执行文件烧录到STM32开发板中。

2301_79326616的博客 1588

php环境如何实现国密SM2相关功能

🏆本文收录于《优快云问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 1616

Python爬虫进阶:反爬策略应对与健壮爬虫构建实战

网络爬虫是一种自动化获取网页数据的技术,其核心原理是通过模拟浏览器请求与服务器交互,解析返回的HTML或JSON数据以提取所需信息。在数据采集和自动化测试等领域,这项技术具有重要价值。然而,在实际应用中,爬虫工程师常面临网站反爬机制的挑战,如请求频率限制、动态内容加载和复杂数据解析等问题。为了应对这些挑战,需要掌握伪装请求头、处理Cookie会话、设置请求间隔等基础反爬策略,并运用XPath、正则表达式等工具进行精准数据提取。同时,构建健壮的爬虫还需关注错误处理、日志记录和状态管理,以确保爬虫的稳定性和可维

weixin_34408624的博客 368

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

网络爬虫如何添加爬虫代理

现在的互联网时代,大数据的进步,网络爬虫也越来越多的网络爬虫用户。网络爬虫用户在做业务是,访问目标网站时会触发目标网站的反爬机制。由于网络爬虫用户的请求量大和采集速度快,就会导致出现这种情况,如何解决这种情况,就需要用到常见的爬虫代理IP了。那网络爬虫如何寻找这些有效的爬虫代理IP呢? 1、浏览器上搜索免费代理IP 2、通过自己的爬虫程序去爬取IP 3、通过浏览器或者代码验证IP的有效性 4、保存文本格式 网上爬虫取到的免费代理加到自己的IP池去使用,有些代理虽然能用。但是对于公司业务或者是对代理

jingzhunhuoke9的博客 569

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Python爬虫进阶:DeepSeek-OCR-2破解验证码与反爬机制

本文介绍了如何在星图GPU平台上自动化部署📄 DeepSeek-OCR-2智能文档解析工具,实现高效验证码识别功能。该工具采用先进的视觉因果流技术,可精准破解各类验证码,特别适用于爬虫项目中的反爬机制突破,显著提升数据采集效率。

weixin_42524864的博客 560

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【总结】爬虫基础(2022.05.09)

文章目录【总结】爬虫基础(2022.05.09)1. 爬虫基础1.1 爬虫概念1.2 爬虫学习流程1.3 相关细节学习2. requests模块的使用2.1 简单使用2.2 爬虫伪装2.3 API接口数据爬取练习2.4 图片的读取与下载保存 【总结】爬虫基础(2022.05.09) 1. 爬虫基础 1.1 爬虫概念 爬虫: 别名:(网页蜘蛛、蠕虫) 学名:网络数据采集。 概念:根据程序员的自定义规则(想法)在互联网中自动的爬取数据(图片、音频、视频、文字等都叫做数据)。 1.2 爬虫学习流程 1.爬虫对谁做

weixin_45935989的博客 850

spider_reverse核心功能揭秘:15个实战案例带你攻克反爬难题

spider_reverse是一个专注于爬虫逆向工程的开源项目,提供了丰富的实战案例和解决方案,帮助开发者轻松应对各种反爬机制。无论是TLS指纹识别、滑块验证码,还是复杂的JavaScript加密,该项目都能为你提供简单高效的破解思路和代码示例。 ## 为什么选择spider_reverse? 在当今数据驱动的时代,网络爬虫成为获取信息的重要手段。然而,越来越多的网站采用了各种反爬技术,给数据

gitblog_00210的博客 728
上一篇: 爬虫--08:移动端数据的抓取
下一篇: 数据分析--01:数据分析的介绍与基本图例的绘画
十束多多良^_^
博客等级 码龄6年 9粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值