爬虫:从入门到入狱,进去一起做兄弟

Python 爬虫从入门到入狱之路一 正则表达式,又称规则表达式,通常被用来检索、替换那些符合某个模式(规则)的文本。正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。给定的字符串是否符合正则表达式的过滤逻辑(“匹配”);通过正则表达式,从文本字符串中获取我们想要的特定部分(“过滤”)。 阅读详情

〇、从入门到入狱

中国爬虫违法违规案例汇总[1]

一、什么是爬虫

二、爬虫的分类

搜索引擎:百度、谷歌

数据采集:天眼查、企查查

薅羊毛:抢票机器人、秒杀软件,比价软件,微博僵尸粉

……

三、爬虫与反爬虫

  1. 1. 君子协议:robots.txt

www.baidu.com/robots.txt[2]

    1. 最简单的爬虫

Python版

import requests   rsp = requests.get('http://www.httpbin.org/user-agent')

Java版

@Test   public void testHttpclient() throws IOException {       CloseableHttpClient client = HttpClientBuilder.create().build();       HttpGet get = new HttpGet("http://www.httpbin.org/user-agent");       CloseableHttpResponse response = client.execute(get);       HttpEntity entity = response.getEntity();       String string = EntityUtils.toString(entity);       System.out.println(string);   }          @Test   public void testHtmlUnit() throws IOException {       WebClient edge = new WebClient(BrowserVersion.FIREFOX);       edge.getOptions().setCssEnabled(false);       edge.getOptions().setJavaScriptEnabled(true);       edge.getOptions().setThrowExceptionOnFailingStatusCode(false);       edge.getOptions().setThrowExceptionOnScriptError(false);       edge.waitForBackgroundJavaScript(600*1000);       UnexpectedPage page = edge.getPage("http://www.httpbin.org/user-agent");       System.out.println(page.getWebResponse().getContentAsString());   }

加入依赖

<dependency>       <groupId>org.apache.httpcomponents</groupId>       <artifactId>httpclient</artifactId>       <version>4.5.3</version>   </dependency>   <dependency>       <groupId>net.sourceforge.htmlunit</groupId>       <artifactId>htmlunit</artifactId>       <version>2.45.0</version>   </dependency>

但是这样的爬虫很容易通过检测UA头被发现,服务器就可以对这样的爬虫做出反爬的措施。

    1. 修改爬虫的UA

Python版

header = {       'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36'   }   rsp = requests.get('http://www.httpbin.org/user-agent', headers = header)

Java版

@Test   public void testHttpclient() throws IOException {       CloseableHttpClient client = HttpClientBuilder.create().build();       HttpGet get = new HttpGet("http://www.httpbin.org/user-agent");       get.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36");       CloseableHttpResponse response = client.execute(get);       HttpEntity entity = response.getEntity();       String string = EntityUtils.toString(entity);       System.out.println(string);   }
    1. 控制爬虫的频率

修改UA只是第一步,服务器还会针对每个ip地址的请求频率来识别爬虫,比如一分钟内请求几百几千次,一天24小时不间断的请求,这些特征都可以被识别为爬虫程序。所以在大规模抓取数据时,需要对降低抓取频率,比如每次请求后sleep 3~5 秒;但是这样会大大降低抓取的效率,所以这里就需要用到代理IP池——当然也可以通过部署集群的方式来提高爬的速度

代理服务器会转发爬虫请求,这样服务器针对IP的限制就会被绕过。

proxy = {       'http': '',       'https': ''   }   header = {       'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36'   }   rsp = requests.get('http://www.httpbin.org/user-agent', headers = header, proxies = proxy)

代理IP分透明代理,匿名代理和高匿代理,透明代理其实并不会隐藏爬虫的真实IP,匿名代理会在请求头里带上爬虫的IP,有一定几率会被识别,高匿代理则会完全隐藏爬虫的IP,更推荐使用。

据说现在互联网上50%以上的流量都是由爬虫产生的,针对一些热门资源这一比例可以高达98%以上。针对这种情况,服务器会需要用户登录才能访问,而简单的登录验证就是将浏览器上的cookie和服务器session绑定起来。

    1. 验证码(Completely Automated Public Turing test to tell Computers and Humans Apart,简称CAPTCHA)

对于简单的字母和数字组成的验证码,可以通过自己训练模型来识别,或者使用第三方的打码平台来验证。

def bypassWithDama():       rec_url = "http://pred.fateadm.com"       tm = str(int(time.time()))       sign = CalcSign(pd_id, pd_key, tm)       asign = CalcSign(app_id, app_key, tm)       param = {           "user_id": pd_id,           "timestamp": tm,           "appid": app_id,           "sign":sign,           "asign": asign,           "predict_type": "30600",           "up_type": "mt"       }       url = rec_url + "/api/capreg"       img_data = open('/Users/xuhang/Desktop/captcha.jpeg', 'rb')       files = {           "img_data": ('img_data', img_data)       }       header = {           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36'       }       rsp_data = requests.post(url, param, files=files, headers=header)       print('【斐斐打码】' + rsp_data.text)       return rsp_data.json()      // 【斐斐打码】{"RetCode":"0","ErrMsg":"","RequestId":"20220303110050322d81ed0007a58386","RspData":"{\"result\": \"yfx5\"}"}

对于像Google的CAPTCHA或者 Intuition的hCaptcha或者arkoselabs的FunCaptcha,这类复杂的验证码,需要识别图片中的物品并点击符合要求的图片,或者将图片旋转到正确的角度,可以使用打码平台的人工打码,由人工完成后将结果返回。

    1. 带上登录后的cookie

对于一般安全性不强的网站,并没有针对登录验证做太多的设计,所以爬虫很容易就能实现带cookie访问。

header = {       'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36'   }   url = 'https://store.steampowered.com/account/'   rsp = requests.get(url, headers=header, verify=False)

将响应的文本复制到文件中保存为html格式,然后用浏览器打开,虽然是乱码,但是可以看到Login的按钮,说明是未登录的状态。登录steam之后将请求中的cookie复制出来,修改header后再次请求

header = {       'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36',       'Cookie': '...'   }

可以从页面中找到该账号绑定的邮箱和余额等信息,说明登录成功。虽然可以爬到有限制的信息,但是爬虫和账号绑定了,这里代理就不起作用了,频繁爬取的话可能会导致被封号,这里就需要准备多个账号了,好在爬虫可以代替人工申请账号,只是成本会高一些。

虽然上面的操作或多或少可以骗过服务器的检测,但是相比与真实的浏览器,爬虫程序还是会在很多方面存在差异。比如真是浏览器通常会有document,setInterval等对象,爬虫程序缺少这些对象可能会导致某些关键性步骤无法执行,从而被服务器识别出来。另外有些网站需要post提交请求数据,但是某些必需的参数又是经过各种复杂加密混淆之后的结果,有时候可能追踪一个参数忙碌了好几天,成功的爬取了一天,第二天网站改参数了。针对这种情况,我们可以使用真实的浏览器的爬取。

如果是个人网站的站长,通常没有过多的精力来对抗爬虫,简单点的方法就是上面的随机生成验证码,然后加点干扰线。或者接入第三方的验证码平台,比如极验。但是验证码通常只用在有敏感操作的地方,不可能每个请求都要验证码,这时就可以使用网页防火墙之类的服务,通过检查客户端的引擎和一些特征来识别是不是爬虫,这样就可以拦截大部分的爬虫了。

该防火墙最开始是通过浏览器的引擎进行一些计算任务,只有计算正确才能成功跳转,但是已经有人成功用python模拟了计算过程,目前使用的是hCaptcha的验证码。

    1. headless浏览器

PhantomJS[3]是一个可以执行javascript脚本的无头网页浏览器,由于Chrome浏览器在17年开始支持无头模式,PhantomJS的作者已经停止维护了,推荐大家去使用Chrome。

下面是PhantomJS的一个demo

var page = require('webpage').create();   page.open('http://www.google.com', function() {       setTimeout(function() {           page.render('google.png');           phantom.exit();       }, 200);   });

这里推荐使用Selenium,这个工具可以驱动Chrome、Firefox、IE、Safari、Opera和PhantomJS,并且提供多种语言的版本,只需要安装相应的浏览器并指定浏览器的驱动路径即可。

# -*- coding: utf-8 -*-   from selenium import webdriver   import time   from selenium.webdriver.common.keys import Keys   from selenium.webdriver import ActionChains      """   如果控制台出现乱码,尝试修改编码格式:chcp <编码>   65001 UTF-8   950  繁体中文   936  GBK   437  MS-DOS      """      options = webdriver.ChromeOptions()   # 以Headless模式启动   # options.add_argument('headless')   # 窗口大小(通过截图可以反映窗口大小)   options.add_argument('window-size=1200x600')   # 设置User-Agent   options.add_argument('user-agent=Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36')      # 创建实例   browser = webdriver.Chrome(chrome_options = options, executable_path='/Users/xuhang/Downloads/chromedriver')      # 窗口最大化   browser.maximize_window()      # Part Ⅰ      # 请求网址   browser.get(url = "https://www.smzdm.com")   time.sleep(2)      # 截图   browser.save_screenshot('smzdm_1.png')      # 下拉滑动页面 - 通过JS脚本   browser.execute_script("window.scrollTo(10000, document.body.scrollHeight)")      # 下拉滑动页面 - 通过模拟鼠标移动   # from selenium.webdriver.support.wait import WebDriverWait   # WebDriverWait(browser, 20, 0.5).until(lambda x: x.find_element_by_id('feed-main-list'))   # actionChain = browser.find_element_by_css_selector("#feed-main-list li:last-child")   # ActionChains(browser).move_to_element(actionChain).perform()   browser.save_screenshot('smzdm_2.png')      # 新开窗口打开百度首页   browser.execute_script("window.open('https://www.baidu.com')")   handlers = browser.window_handles   # print(handlers)      # 切换到第2个窗口   browser.switch_to_window(handlers[1])      # 在第2个窗口操作   browser.find_element_by_id('kw').send_keys('selenium')   browser.find_element_by_id('su').click()      # 获取cookies   cookies = browser.get_cookies()   cookie = browser.get_cookie('BAIDUID')   time.sleep(2)   browser.save_screenshot('baidu_1.png')   browser.switch_to_window(handlers[0])   time.sleep(2)   print(cookie)      browser.quit()

到这里,配合上代理IP和账号登陆已经可以绕开大部分的网站验证了,但是即使用上了真实的浏览器,Selenium操控的浏览器还是会暴露出一部分特征。比如window.navigator.webdriver属性,这个属性是正常浏览器没有的,但是Chrome Headless里有,虽然可以通过参数关闭该属性,但是仍有其他属性会暴露出来。

除了以上用到的Selenium,还有Pupperteer和Python版本的Pypperteer,器中Pupperteer是Google官方推出的基于Chrome DevTool protocol 协议的Nodejs包,通常在Selenium失败之后尝试使用Pupperteer,还是不行可以考虑开发Chrome的插件来爬,因为Chrome插件是运行在真正的浏览器上面,和平时使用的一样,它还能使用浏览器以往的缓存,不容易被识别出来。

四、扩展

反爬虫除了在服务端对可疑请求进行拦截,还可以在客户端增加爬虫的开发难度,其中就包括代码混淆、干扰调试、数据投毒、图片替换数据、字体乱序。

    1. 代码混淆

base62加密最明显的特征是以eval(function(p,a,c,k,e,r))开头,这样加密后的代码没有可读性,对于不熟悉此加密的人有一定难度,但是由于此方法最终要执行eval方法,所以只需要通过console.log将内容打印出来就是加密前的代码。

    1. 干扰调试

由于爬虫必须通过找出数据接口才能进行数据抓取,对于浏览器最基础的操作就是打开DevTools来分析请求和数据,所以一旦发现用户打开DevTools就可以做一些干扰来增加难度。比如debugger;本来是开发人员用来在调试代码时使用的命令,该命令会强制在此处打断点,所以可以对爬虫的开发人员进行一定的干扰。但是此方法也可以通过浏览器的停用断点使其失效。类似的方法还有检测到DevTools后立即删除所有关键的信息,这样也就不会暴露数据接口了。(微信读书用到了此方法)

    1. 数据投毒

此方法会有一定几率误伤到正常用户,所以使用得很少,而且使用也必须很谨慎。如果后台在检测到是爬虫之后,将原本正确的数据替换掉,让爬虫拿到的是毫无意义的数据,这样爬虫方就会因为这些异常数据做出错误的策略。

    1. 图片替换

因为爬虫主要抓取的是文本类型的数据,比如价格、邮箱等,而爬虫处理文本数据的成本是很低的。如果将关键的数据用图片进行替换,图片上展示的是正常的数据,这样不会对正常访问的用户造成影响,只会增加爬虫获取数据的难度。

    1. 字体乱序

这种方法和数据投毒的效果类似,但是不会误伤正常访问的用户。具体操作是在页面上加载乱序过的字体文件,但是乱序的规则后台是知道的,后台在返回数据的时候只要根据乱序的规则做一次反向的替换,就能让html的源数据和页面上展示的不一致,而爬虫是根据html源里的数据来进行处理的。

在线字体编辑器-JSON在线编辑器 (qqe2.com)[4]

这个字体文件里,数字7和1交换了顺序(为演示方便,只乱序了2个数字,通常是越乱越好),在页面上定义这个字体并指定文件路径,然后使用定义的字体。

源文件里的数字是1234567890,页面上展示的是7234561890。

对于中文也是类似的,只不过中文字符过多,乱序之后映射关系复杂,会让维护变得困难。


---------------------------END---------------------------

题外话

“不是只有程序员才要学编程?!”

认真查了一下招聘网站,发现它其实早已变成一项全民的基本技能了。

连国企都纷纷要求大家学Python!
在这里插入图片描述

世界飞速发展,互联网、大数据冲击着一切,各行各业对数据分析能力的要求越来越高,这便是工资差距的原因,学习编程顺应了时代的潮流。

在这个大数据时代,从来没有哪一种语言可以像Python一样,在自动化办公、爬虫、数据分析等领域都有众多应用。

更没有哪一种语言,语法如此简洁易读,消除了普通人对于“编程”这一行为的恐惧,从小学生到老奶奶都可以学会。

《2020年职场学习趋势报告》显示,在2020年最受欢迎的技能排行榜,Python排在第一。
在这里插入图片描述

它的角色类似于现在Office,成了进入职场的第一项必备技能。

如果你也想增强自己的竞争力,分一笔时代的红利,我的建议是,少加点班,把时间腾出来,去学一学Python。

因为,被誉为“未来十年的职场红利”的Python,赚钱、省钱、找工作、升职加薪简直无所不能!

目前,Python人才需求增速高达**174%,人才缺口高达50万,**部分领域如人工智能、大数据开发, 年薪30万都招不到人!在这里插入图片描述

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述
Python爬企查查网站数据的爬虫代码如何写? 在大数据时代,数据的获取与分析变得尤为重要。企业信息查询平台“企查查”作为国内领先的企业信用信息查询工具,提供了丰富的企业数据资源。对于数据科学家和工程师而言,能够从这些平台高效地抓取数据,无疑是一项重要的技能。本文将详细介绍如何使用Python编写爬虫代码,从企查查网站抓取企业数据,并探讨其中的技术难点和解决方案。 阅读详情

相关推荐

【Python爬虫系列】_006.Web前端基础HTML+CSS

其他素标签:section、article、footer等,对于爬虫来讲,就可以看成是div素标签。点击提交按钮之后,会将form标签内所有用户填入的内容按下面的格式发送给action指定的服务器。CSS的基本语法由选择器、属性、属性的值组成,如果选择器有多个属性,由分号隔开。/* before在指定标签内容之前添加内容,并设置样式 *//* after在指定标签内容之后添加内容,并设置样式 */注意:这里的代码都是英文格式,例如花括号、冒号和分号。/*设置所有标签为黑底黄字,包含body标签*/

weixin_50296259的博客 407

Python从入门到入狱,警方上门,23人被带走…这种开发千万别干!【附爬虫教程】

据悉,王某漪等人此前曾合伙创业,但因经营不善没有赚到钱,心灰意冷之际,他们发现买卖购物网站上的客户信息可以赚大钱,于是便走上了这条违法犯罪的不归路。在市局网安总队等有关部门的支持下,经过半个多月的缜密侦查,将一个非法获取计算机信息系统数据的犯罪团伙一网打尽,抓获 23 名犯罪嫌疑人。专案组通过大量工作发现,除该购物网站外,许多热门 APP 的“直播间”里也都出现过类似现象,而相关的异常流量情况均指向同一网站。如果大家想学习Python爬虫,数据采集,我这里有正规的教程,熬夜整理了一个月,希望对大家有帮助!

WANGJUNAIJIAO的博客 5251

【审计专栏】【法律领域】【社会科学】 第五十六篇 企业管理层互动形态分析01 AI分析

战略官试图塑造公司“战略现实”S_s(如“未来在于AI”),业务总裁固守“运营现实”S_o(如“现金为王”)。

weixin_49199313的博客 502

爬虫-从入门到入狱

前言: 爬虫理论上是被禁止的,这里只讲方法,so,希望大家遵守法律法规,不要去爬敏感网站的数据,不要从事贩卖国家机密相关的相关事宜等。 此次涉及到的知识点如下: 利用json库截取json指定字符串 利用argparse库实现参数化调用 利用pymysql库实现数据库操作 数据库长连接的使用 pymysql库的使用 pymysql的库作用就是联动mysql数据库,我们这里需要知道的是如何创建数据库连接,如何创建游标对象,如何执行sql语句与事务的提交 首先这里介绍的是连接数据库的长连接的使用,

weixin_48421613的博客 1万+

【Java】对接微信转账到零钱接口 Java微信商家转账 apiV3(该踩的雷都踩了)

配置apiv3依赖java代码。

Moonhwa的博客 4317

别再踩坑了!QT5.15.2配置Android开发环境保姆级避坑指南(含Java8、SDK Tools版本选择)

本文提供QT5.15.2配置Android开发环境的详细避坑指南,重点解决版本锁定、SDK工具选择和QtCreator配置等常见问题。通过实测推荐的Java8、Android SDK Tools版本及NDK配置,帮助开发者高效完成环境搭建,避免隐性冲突和配置失败。

weixin_42537919的博客 237

python 自增运算符是什么?Python自增1如何实现

由上面的代码我们可以看出,++运算符在Python中不起作用,其实除了这个运算符不起作用,相应的- -运算符在Python中也是不起作用的,既然如此,那么如何实现Python的自增运算呢,这就需要用到原始的n=n+1来实现了!在学习任何一种编程语言,运算方法的学习是不可避免的,其中自增运算符++的使用也是其中的重点,很多人容易弄不明白其用法,尤其是在Python中,其用法更加的不同!

m0_59236127的博客 8742

Greenplum基础

CREATE DATABASE 是 SQL 命令,用于创建一个新的数据库。name 是你要创建的数据库的名称。这个名称是必须的,并且在同一个数据库服务器上必须是唯一的。可选项,OWNER 指定了新数据库的所有者,如果未指定,新数据库的所有者默认是执行该命令的用户。dbowner 是数据库所有者的用户名。可选项,TEMPLATE 指定了用于创建新数据库的模板。在 PostgreSQL 和 GreenPlum 中,通常有一个名为 template1 的默认模板。如果不指定,就会使用这个默认模板。

m0_57697768的博客 1206

刑!太刑了!今天又是一个入狱小技巧

日志 6:30 按掉闹钟,解决脑内“我到底是否需要这份工作”的天人之争,囫囵洗脸刷牙,离开出租屋骑着共享单车前往公司。 8:00 在一片茫然中结束早会,下意识推推了脸上的黑框眼镜,打开电脑,开始操作数据库 11.30 需求突然又被产品经理改了,看来又没法按时吃午饭了,心情焦躁不安,旁边的同事有一搭没一搭和测试小姐姐聊着天。 14.00 没超过十块钱的便宜外卖味同嚼蜡,随便扒拉了两口,也没有了午睡的时间,测试与开发的日常撕逼导致了产品延发,被经理训话到了现在 15.00 新来的实习生十分

qq_51531244的博客 826

一文吃透 BMS:动力电池与储能共用的电池管控全架构详解

BMS作为电池系统的核心控制器,其技术深度和系统复杂性不容小觑。动力电池与储能系统虽然应用场景不同,但在核心架构上共享大量基础技术。成功的BMS设计需要在精度、可靠性、成本、功耗之间找到最佳平衡点。未来,随着电池技术的进步和智能化需求的提升,BMS将向着更高集成度、更强智能化、更优经济性的方向发展。无论是汽车工程师还是储能系统设计师,深入理解BMS的全栈架构,掌握其核心技术原理,都将是应对未来能源存储挑战的关键能力。核心要点回顾BMS采用分层分布式架构,硬件是基础,算法是灵魂。

小帽子的博客 339

【数据可视化-77】中国历年GDP数据可视化分析:Python + Pyecharts 深度洞察(含完整数据、代码)

通过上述可视化分析,我们可以清晰地看到中国历年GDP的变化趋势和产业构成。玫瑰图展示了2024年的产业构成,地图和柱状图展示了GDP的时空分布,双轴折线图和雷达图则分别展示了GDP总量与人均GDP的变化以及各行业的GDP贡献。希望这篇文章能帮助您更好地理解和分析中国历年GDP数据。如果您有任何问题或建议,欢迎在评论区留言!🎉。

qq_38614074的博客 1472

Python 入门到入狱3(构建流程)

准备需要的工具包一、下载需要的常用包二、构建流程三、常用工具包的使用 一、下载需要的常用包 1.1点击File加入Settings 1.2选择提交需要的工具包 -------!常用的系统模块 1. sys 2. bs4\BeautifulSoup //网页解析~获取数据 3. re //正则表达式~进行文字匹配 4. urllib //制定URL~获取网页数据 5. xlwt //进行Excel操作 6. sqlite3 //进行S

weixin_45067120的博客 455

从 Classic ABAP 到 ABAP Cloud:一份面向开发者的 SAP 学习路线图与实战指南

ABAP技术演进路线:从语法到架构思维 本文系统梳理了现代ABAP开发者的能力成长路径。在S/4HANA与云时代,ABAP已从传统过程式语言转变为支持面向对象、测试驱动和云原生开发的现代技术栈。学习路线应围绕四大核心维度展开:1) 语言基础(ABAP OO/Modern ABAP);2) 工程化实践(ABAP Unit/ATC/Clean ABAP);3) 数据建模(CDS/AMDP);4) 服务化架构(Gateway/OData/Fiori)。文章强调以交付形态倒推技术栈,通过真实案例展示了如何将零散技术

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 361

接单小赚两千,有期徒刑两年!

这是「进击的Coder」的第 944篇技术分享作者:K 哥爬虫来源:K 哥爬虫“ 阅读本文大概需要 6 分钟。 ”我的朋友小乐前阵子不是失业了嘛,找工作也是一言难尽。原本打算去做 Python 炒粉,结果到最后发现自己厨艺不行,做的东西狗都不吃。但没有收入可不行,小乐决定一边找工作,一边做爬虫兼职,然而看了一圈,要么是给人当黑奴,要么就是爬个人信息。以我对他的了解,黑奴是不会当的,但这人胆子出奇...

静觅 287

飞牛fnNAS同步微信微信聊天记录

微信聊天记录如何备份到NAS?本文介绍了利用NAS虚拟机和同步工具实现微信记录自动备份的方法。通过在NAS上搭建"云电脑"长期运行微信PC端,并配置微力同步将聊天记录文件夹自动同步到NAS存储,解决了传统电脑备份的安全性问题。操作步骤包括:1)在NAS上安装虚拟机系统;2)登录微信PC端并同步手机记录;3)配置同步工具将微信记录文件夹同步到NAS。该方法尤其适合不常使用PC微信的用户,可实现记录永久保存和远程查看,更换手机时也能快速恢复历史记录。

dgnankai的专栏 4303

Oracle Mobile Authenticator-甲骨文云服务验证APP-Android手机端验证

Oracle Mobile Authenticator_9.9_APKPure.apk,大部分Android手机的应用市场没有下载,需要到 Google Play 安装,我这里已经把安装包下载好了,在Android手机上直接安装即可。

Web 安全实战:6 种认证绕过与权限控制漏洞深度解析

本文深度解析了Web安全中6种常见的认证绕过与权限控制漏洞,包括无验证码爆破登录、验证码绕过、忘记密码功能缺陷、OAuth滥用、JWT篡改以及Token重放与权限绕过。文章结合实战案例与工具演示,详细剖析了攻击原理与高级绕过技巧,并针对每种漏洞提供了专业、立体的防御方案,旨在帮助开发者与安全人员构建更坚固的应用安全防线。

e6f7g8h9i的博客 107

便携式智能手语翻译系统.rar

便携式智能手语翻译系统.rar

Python 爬虫从入门到(不)入狱学习笔记

HTTP(超文本传输协议)请求是客户端(如网页浏览器)和服务器之间进行通信的一种方式。(1)要爬取的网站:https://movie.douban.com/top250。http://books.toscrape.com/:专门给练习爬虫的网站。实例网站:http://books.toscrape.com/(6)实例:导出豆瓣 top250 的所有标题。(4)HTML 常见标签练习:demo.py。(2)通过定义请求头,把服务器伪装成浏览器。(3)HTML 的常用标签类型。(2)最简单的 HTML。

暗o星 3645

智慧监狱整体解决方案.pptx.pptx

智慧监狱整体解决方案.pptx.pptx

圆柱拟合.zip_MATLAB拟合圆柱_anywayri2_matlab圆柱拟合_圆柱_拟合圆柱

可以进行圆柱拟合,matlab操作,简单易上手

爬虫从入门到入牢

爬虫一般指网络爬虫。 网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫 安装:各种请求方式:常用的就是 requests.get() 和 requests.post() 2. requests 模块介绍 在 python 中模拟发送请求使用 requests 模块,或者使用 urllib 内置模块,但是其 api 使用复杂。 2.1 requests ge

XWenXiang的博客 6156

废柴日记8:从入门到入狱的Python爬虫学习笔记1(入门篇)

我错了,但下次也不一定(●’◡’●)前言:我错了,但下次也不一定(●’◡’●)米娜桑,好久不见,不知道这段时间各位手中的西瓜刀有没有按时擦亮呢?我也是在摸爬滚打将近一年之后总算是找到了一点人生的方向所以当成救命稻草现在正死死握紧不放手的啊。这一年真的是经历了很多,发生了很多事,做了很多次选择,但可能我身上已经被锁定了『反向预测』的笨拙诅咒导致走了很多弯路,但好在是好好的活到了出头之日了。(抽奖的事一直在参与,从未被选中,呜呜呜,岷叔!(没错,永恒mc更新啦!!!

Mr.RainsdRop的胡思乱想 2004

Python爬虫从入门到入狱?看了这篇文章或许会改变你的看法

导读 偶尔有大数据公司被端,无良流量自媒体为博眼球,夸大事实,一句爬虫玩得好,牢饭吃得早,把想学爬虫萌新吓得瑟瑟发抖,生怕因为自己写的爬虫被拷进去,嘤嘤嘤,害怕,我:说实话,以大部分萌新的技术能力有些实在想太多,这种妄下定论的方式跟吃完虾再吃维生素C会砒霜中毒理论一样,脱离剂量谈毒性——都是耍流氓。 从技术中立角度而言,爬虫技术本身并无违法违规之处,爬什么,怎么爬才是导致锒铛入狱的罪魁祸首。Github上有个库记录了国内爬虫开发者涉诉与违规相关的新闻、资料与法律法规: https://github.com/

m0_59164304的博客 3593

Node.js 爬虫实战指南(一):从入门到入狱?别慌,先学会正确姿势

摘要: 本文介绍了合法爬虫的基本规则与实现方法,通过Hacker News爬虫案例演示如何合规抓取数据。首先强调了爬虫的法律边界,包括遵守robots.txt、控制请求频率等关键原则。接着详细展示了使用Node.js(axios+cheerio)构建爬虫的技术实现,包括环境搭建、页面解析和数据存储。最后提供了完整的代码示例,演示如何安全获取并存储公开网页数据。全文以"爬虫写得好,牢饭吃到饱"的警示开头,贯穿技术实现与法律合规的双重考量。

agions的博客 2381

爬虫开发,从入门到入狱

一个网页的组成:css 样式,html 网页结构和信息,JavaScript 交互逻辑脚本我们爬虫最关心网页上的数据信息,所以主要和html打交道一个简单的html文件长这样。

qq_36766976的博客 1485

【Python网络爬虫】企查查批量查询接口爬虫

在http请求中,主要包含两种方式,一种是get请求另一种是post请求,在post请求中,请求headers中的哈希加密参数的生成a_default()函数和r_default()函数中生成,函数中的其中一个参数名为data,此时,data为post请求中的数据,为字典类型;但在get请求中,由于和post请求不一样,数据中并没有data部分的内容,因此,在get请求中,headers中哈希加密参数的生成不需要传递参数data,或者data的值为默认值,即为空字典。

moyuweiqing的博客 6286

企查查爬虫python实现(一)整体方法

企查查的爬虫的python实现,采用selenium模块+chromedriver驱动

qq_41900846的博客 9769
上一篇: Linux系统知识大分享!
下一篇: 十分钟图文详解Mysql!小白轻松搞懂!幻读|事务隔离|日志|锁
Python_P叔
博客等级 码龄3年 5447粉丝 827原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值