19、python 脚本

news/发布时间2024/8/25 6:06:09

1.python 安装及配置

下载地址

python2 和 python3 共存安装

2.python 可视化

import turtleturtle.pensize(2) #画一个小圆
turtle.circle(10)
turtle.circle(40)
turtle.circle(80)
turtle.circle(160)

工具:

python IDE:pycharm

https://pan.baidu.com/s/1s_bkgDT0QxNTQY07LnQRWQ?pwd=2dlb
提取码:2dlb

Windows + sublime/VSCode + python

Linux + vim/sublime + ipython

pip 官网:https://pypi.org/project/pip/(python 2.7.9 + 或 python 3.4 + 以上版本自带)

3.python 网页爬虫

3.1.爬虫思想

爬虫:数据皆可取

Linux:一切皆文件

python:一切皆对象

LaTex:所想即所得

Office:所见即所得

 

爬虫会造成短时间内服务器吞吐量过大,CPU 升高,负载过重,影响正常用户的访问;出于对数据保护,网站所有者会设置验证码、滑动窗口等需要人为交互的操作来保证访问确保不是爬虫程序,因此爬虫需要考虑到规划、负载

通常网站所有者会在网站根路径下放置一个 robots.txt 文件,该文件定义了一套协议规定网络爬虫器不应该爬取或允许爬取那些区域

3.2.HTTP 请求协议

最基本的 HTTP 请求方法:GET、POST、PUT、DELETE

3.3.常用 python 库

1.urllib/urllib2/urllib3:https://docs.python.org/zh-cn/3/library/urllib.html(自带)

urllib 是一个收集了多个涉及 URL 的模块的包,包含打开、读取、解析URL、解析 robots.txt 文件、异常处理等功能

python3 中也有 urllib 和 urllib3 两个库,urllib 几乎是 python2.7 中 urllib 和urllib2 两个模块的集合,所以常用 urllib 模块,而 urllib3 则作为一个拓展模块使用。python2.7 中的 urllib2 相当于 python3 中的 urllib.request。

通常 python2.7 中的 urllib2 在移植到 python3 中时可疑改写成:import urllib.request as urllib2

2.requests:https://requests.readthedocs.io/zh_CN/latest(pip install requests)

该模块允许发送 HTTP/1.1 请求

3.beautiful soup:https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/#(pip install beautifulsoup4)

该模块可以从 HTML 或 XML 文件中提取数据,能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式。

3.4.案例1-爬取图片

#coding:utf-8
from requests import *
from re import *
"""
coding:utf-8:指定编码格式
爬取多肉图片并保存在本地
"""for i in range(5):#获取站点源码a=get('https://www.duitang.com/blog/?id=14188000%d'%(i+47))""".:匹配一个+:后面所有的都能匹配上?:最小化匹配(能匹配多少就匹配多少).+?:能匹配所有的东西找对应的图片源码,限制找源码中只能有多肉图片那一行代码:<img alt=".+?" id="mbpho-img" class="js-favorite-blogimg" src="https保证能够精准匹配src="(https.+?)":这里加括号表示只需要括号这部分内容若没有后面的style匹配,那么返回的结果就会从https开始后面的所有字符,包括stype中的内容"""reg=compile(r'<img alt=".+?" id="mbpho-img" class="js-favorite-blogimg" src="(https.+?)" style=".+?" />')#输出找到的图片地址,findall:查找所有跟上述代码一样的内容#print(findall(reg,a.text))  ,text:会对内容进行转码操作datas=findall(reg,a.text)#请求刚才匹配到的数据,content:获取源码img=get(datas[0]).content#将请求到的图片保存到本地 /img 下f=open('./img/%d.jpg'%(i),'wb')f.write(img)f.close()

3.5.requests 库的使用

import requests
"""
requests 库的使用
"""r= requests.get('https://github.com/timeline.json',headers = dict, #头信息params  = dict, #Url参数paramsdata    = dict, #发送表单postproxies = dict, #代理cookies = dict, #添加cookie信息timeout = int   #设置超时事件
);
r.txt #获取源码
r.status_code #获取状态码

3.6.正则表达式

\:转义
^:匹配首字符串
$:匹配尾字符串
*:匹配前面子表达式零次或多次
+:匹配前面子表达式一次或多次
?:匹配前面子表达式零次或一次
{n}:匹配 n 次。如:o{2} 不能匹配 bob 中的 o,但能匹配 food 中的两个 o
{n,}:至少匹配 n 次。如:o{2} 不能匹配 bob 中的 o,但能匹配 fooood 中的所有 o
{n,m}:其中 n<=m,最少匹配 n 次且最多匹配 m 次
?:非贪心量化(Non-greedy quantifiers):当该字符紧跟在任何一个其他重复修饰符(*,+,?,{},{n,},{n,},{n,m})后面时,匹配模式是非贪婪的。
  非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 oooo,o+? 将匹配单个 o,而 o+ 将匹配所有 o。
.:匹配除 \n 之外的任何单个字符。要匹配包括 \n 在内的任何字符,要使用像 (.|\n) 的模式
(pattern):匹配 pattern 并获取这一匹配的子字符串。
[^xyz]:排除型字符集合。匹配未列出的任意字符
[a-z]:字符范围。匹配指定范围内的任意字符
[^a-z]:匹配任何不再指定范围内的任意字符
\b:匹配一个单词边界,也就是指单词和空格间的位置。如,er\b 可以匹配 never 中的 er,但不能匹配 verb 中的 er。
\B:匹配非单词边界。如,er\B 可以匹配 verb 中的 er,但不能匹配 never 中的 er。
\cx:匹配由 x 指明的控制字符。如,\cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z之间,否则将 c 视为一个原义的 c 字符。
\d:匹配一个数字字符。注意,Unicode 正则表达式会匹配全角数字字符。
\D:匹配一个非数字字符。
\f:匹配一个换页符。等价于 \x0c 和 \cL
\n:匹配一个换行符。等价于 \x0a 和 \cJ
\r:匹配一个回车符。等价于 \x0d 和 \cM
\s:匹配任何空白字符,包括 空格、制表符、换页符。等价于 [\f\n\r\t\v]。注意 unicode 正则表达式会匹配全角空格符
\S:匹配任何非空白字符。
\t:匹配一个制表符。等价于 \x09 和 \cl
\v:匹配一个垂直制表符。等价于 \x0b 和 \cK
\w:匹配包括下划线的任何单词字符。等价于 [A-Za-z0-9]。注意 unicode 正则表达式会匹配中文字符
\W:匹配任何非单词字符。
\ck:匹配控制转义字符。k 代表一个字符。等价于 Ctrl-K

正则优先级

最高:\

高:()、(?:)、(?=)、[]

中:*、+、?、{n}、{n,}、{n,m}

低:^、$、中介字符

次最低:串接(即相邻字符连接在一起)

最低:|

3.7.反爬技巧与绕过手段

3.7.1.header 检测与绕过

1.常用 header 头

Accept:指定客户端能够接收的内容类型。如,Accept: text/plain, text/html

Accept-Charset:浏览器可以接受的字符编码集。如,Accept-Charset: iso-8859-5

Accept-Encoding:指定浏览器可以支持的 web 服务器返回内容压缩编码类型。如,Accept-Encoding: compress, gzip

Accept-Language:浏览器可接受的语言。如,Accept-Language: en,zh

Connection:表示是否需要持久连接(HTTP 1.1 默认进行持久连接)。如,Connection: close

Content-Length:请求的内容长度。如,Content-Length: 348

Content-Type:请求的实体对应的 MIME 信息。如,Content-Type: application/x-www-form-urlencoded

Referer:从什么地方来。如:Referer: http://www.zcmhi.com/archives/71.html

2.无 header

#coding:utf-8
from requests import *
from re import *url = 'https://www.zhihu.com/'r=get(url).text
print(r)运行结果可能是 400

3.加 header 绕过

#coding:utf-8
from requests import *
from re import *url = 'https://www.zhihu.com/'
header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36'}
r=get(url,headers=header).text
print(r)

获取正常数据

3.7.2.cookie 加密

#coding:utf-8
from requests import *
from re import *url = 'http://192.168.1.5/a.php/'cookie={'PHPSESSID':'xxxx'}
data={'token':'xxx','type':'7'} r
=post(url,cookies=cookie,data=data).text print(r)

3.7.3.验证码

1.使用验证码接口

2.编写验证码识别库

3.7.4.ban IP

换代理

 

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

如若内容造成侵权/违法违规/事实不符,请联系连锁易网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

结对编程-四则运算

这是一个由c++实现的简单的四则运算程序,使用者总共需要完成300题整数四则运算。 结对伙伴:2252721 程序要求两个运算符,100 以内的数字,不需要写答案。 需要检查答案是否正确,并且保证答案在0-100之间。 需要符合运算规则通过仔细阅读分析题目要求,我和我的同伴决定使用…

手把手教你做阅读理解提高003-Letters Cheer Up Lonely Seniors-信件让孤独的老年人振作起来

PDF格式公众号回复关键字:ZKYDT003阅读理解技巧,在帮助读者有效获取和理解文本信息方面发挥着重要作用,熟练掌握如下6个技巧,可快速突破阅读理解 1 预览文章结构 在开始深入阅读之前,快速浏览文章的标题、段落开头和结尾,可以迅速把握文章的主题、大致内容和结构 标题通常…

30 天精通 RxJS (20):Observable Operators - window, windowToggle, groupBy

前几天我们讲完了能把 Higher Order Observable 转成一般的 Observable 的 operators,今天我们要讲能够把一般的 Observable 转成 Higher Order Observable 的 operators。 其实前端不太有机会用到这类型的 Operators,都是在比较特殊的需求下才会看到,但还是会有遇到的时候。…

03、Smart Link基本原理

Smart Link基本原理以图1描述的组网为例,按照链路正常->链路故障->链路恢复的过程,介绍Smart Link运行的基本原理。 图1 Smart Link示意图链路正常工作原理 SwitchD上的Smart Link组包含了Interface1和Interface2两个接口,其中Interface1为主接口,Interface2为从接口…

18、BGP分层路由

BGP分层路由定义 BGP分层路由是指将一台设备上BGP路由分成基础路由和分层路由。部署BGP分层路由功能可为数据中心网络的故障场景提供更快的路由收敛速度,特别是在分层路由数量远大于基础路由的场景中能够达到较好的收敛效果。为了能够实现BGP分层路由收敛功能,新增了一种分层…

Git及Github使用

学习如何使用git相关命令以及github网站使用角度 找开源项目的途径 • Trending:https://github.com/trending/ • HelloGitHub:https://github.com/521xueweihan/HelloGitHub • 科技爱好者周刊:https://github.com/ruanyf/weekly 特殊的查找资源小技巧-常用前缀后缀 • 找…

[转帖]40.JVM方法区(元空间)大小设置(-XX:MetaspaceSize和-XX:MaxMetaspaceSize)

目录 1.方法区内存大小设置2.如何解决OOM问题?(了解) 1.方法区内存大小设置 1.方法区的大小可以不是固定的,JVM可以根据应用需要自动调整。 a)JDK7及以前(了解):-XX:PermSize设置永久代初始大小。-XX:MaxPermSize设置永久代最大可分配空间。(JDK7目前已经很少用了,这两…

【转载】WPF中TreeView控件数据绑定和后台动态添加数据(一)

原文链接:https://www.cnblogs.com/larissa-0464/p/10227483.html 数据绑定: 更新内容:补充在MVVM模式上的TreeView控件数据绑定的代码。 xaml代码:<TreeView Name="syntaxTree" ItemsSource="{Binding TreeNodes}"><TreeView.ItemTemplate&g…

Charles抓包工具快速入门

目标:能够用charles分析前后端问题 能够用charles模拟弱网测试环境 能够用charles的断点构建异常的测试场景工具简介 是什么 基于HTTP协议的代理服务器,通过成为电脑或者浏览器的代理,截取请求和请求结果达到分析抓包的目的。 特点:跨平台、半免费(免费版和收费版) 工作原…

C.exam.2

1 #include <stdio.h>2 #include <stdlib.h>3 #include <time.h>4 5 #define N 56 int main()7 {8 int number;9 int i; 10 11 srand( time(0)); 12 13 for(i=0;i<N;++i){ 14 number=rand()%65 + 1;//随机生成1—65中的…

10.线程

第十章【线程】 一、进程和线程 1、进程: 代表了内存中正在运行的应用程序,计算机中的资源(cpu 内存 磁盘 网络等),会按照需求分配给每个进程,从而这个进程对应的应用程序就可以使用这些资源了。进程就是在系统中运行一个应用程序的基本单位。 2、线程: 是进程中的一个代…

jangow01

虚拟机配置 将攻击机和靶机放在同一网段下即可 web渗透 IP扫描 nmap -sP 192.168.11.0/24详细扫描 nmap -A 192.168.11.42探测web网站发现一可执行命令的地方,写入一句话木马,用蚁剑链接链接成功用蚁剑写文件,反弹链接,注意只有443端口出网web网站访问该文件 攻击机监听 提…

高并发场景QPS等专业指标揭秘大全与调优实战

高并发场景QPS等专业指标揭秘大全与调优实战 最近经常有小伙伴问及高并发场景下QPS的一些问题,特意结合项目经验和网上技术贴做了一些整理和归纳,供大家参考交流。一、一直再说高并发,多少QPS才算高并发? 高并发的四个角度 只说并发不提高可用就是耍流氓。可以从四个角度讨…

Asp

Asp.Net Core(Ef Core+serilog+hangfire)实践 起因 在这周开始的时候,由于某个厂的数据库和服务器更换,由我负责的模块有10余个同步程序需要丢到新服务器上去,采用IIS的计划任务,就这样,一上午的时间差不多就消耗完了,中间还有人抢服务器用。我能不能把他们整合呢? 首先…

JMeter——异步请求性能测试

前段时间任务要求要对一种异步请求做性能测试,异步请求步骤如下: step1: 发一个数据计算的请求,response里面返回一个jobId step2: 带上这个jobId,就可以实时查看这个请求返回的jobStatus, 如果jobStatus==0, 则成功返回计算结果;如果jobStatus==2,则代表job in progress…

LeetCode 面试经典150题---006

玩了一天多,两天没写了,下次绝对不摆了(最多摆一天)。 #### 42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 n == height.length 1 <= n <= 2 * 104 0 <= height[i] <= 105 不用头想都知道这个题肯…

MD5哈希长度延展攻击(选做)

一、理解长度扩展攻击(length extension attack),是指针对某些允许包含额外信息的加密散列函数的攻击手段。对于满足以下条件的散列函数,都可以作为攻击对象: ① 加密前将待加密的明文按一定规则填充到固定长度(例如512或1024比特)的倍数; ② 按照该固定长度,将明文分…

原型设计工具比较及实践

一、对比分析墨刀、Axure、Mockplus等原型设计工具的各自的适用领域及优缺点 1.墨刀: 适用领域: 快速原型设计 团队协作 移动应用设计 优点: 界面简洁,易于上手,适合初学者或快速原型设计需求。 在线协作功能强大,支持多人实时编辑,适合团队协作。 提供丰富的模板和组件…

智能水务系统:构建高效节水的城市水网

随着城市化进程的加速和人民生活水平的提高,对水务管理的需求也越来越高。传统的水务管理方式已经无法满足现代社会的需求,而智能水务系统的出现为水务管理带来了新的变革。本文将从项目背景、需求分析、建设目标、建设内容、技术方案、安全设计等方面,详细介绍智能水务系统…
推荐文章