1.python 安装及配置

下载地址

python2 和 python3 共存安装

2.python 可视化

import turtle

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

工具:

python IDE:pycharm

链接:https://pan.baidu.com/s/1xg8OcKNftLDrcHjKe2ASlw?pwd=41kr
提取码:41kr

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参数params
data = dict, #发送表单post
proxies = 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

换代理

19、python 脚本的更多相关文章

  1. 将Python脚本封装成exe可执行文件 转

    将Python脚本封装成exe可执行文件 http://www.cnblogs.com/renzo/archive/2012/01/01/2309260.html  cx_freeze是用来将 Pyt ...

  2. 用 Python 脚本实现对 Linux 服务器的监控

    目前 Linux 下有一些使用 Python 语言编写的 Linux 系统监控工具 比如 inotify-sync(文件系统安全监控软件).glances(资源监控工具)在实际工作中,Linux 系统 ...

  3. Python脚本控制的WebDriver 常用操作 <二十七> 文件下载

    测试用例场景 webdriver允许我们设置默认的文件下载路径.也就是说文件会自动下载并且存在设置的那个目录中. Python脚本 测试用Python代码: # coding=gbk ''' Crea ...

  4. Python脚本控制的WebDriver 常用操作 <二十八> 超时设置和cookie操作

    超时设置 测试用例场景 webdriver中可以设置很多的超时时间 implicit_wait.识别对象时的超时时间.过了这个时间如果对象还没找到的话就会抛出异常 Python脚本 ff = webd ...

  5. 用 Python脚本生成 Android SALT 扰码

    发布Android 有偿应用时需要随机生成 SALT 扰码夹在文件中,以下是 Python脚本(当然你选择 C/Java/SHELL/Perl 或别的都行) #!/usr/bin/python # F ...

  6. linux下设置计划任务执行python脚本

    linux下设置计划任务执行python脚本 简介 crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自 ...

  7. python 全栈开发,Day94(Promise,箭头函数,Django REST framework,生成json数据三种方式,serializers,Postman使用,外部python脚本调用django)

    昨日内容回顾 1. 内容回顾 1. VueX VueX分三部分 1. state 2. mutations 3. actions 存放数据 修改数据的唯一方式 异步操作 修改state中数据的步骤: ...

  8. 使用python脚本实现统计日志文件中的ip访问次数

    使用python脚本实现统计日志文件中的ip访问次数,注意此脚本只适用ip在每行开头的日志文件,需要的朋友可以参考下 适用的日志格式: 106.45.185.214 - - [06/Aug/2014: ...

  9. shell脚本和python脚本实现批量ping IP测试

    先建一个存放ip列表的txt文件: [root@yysslopenvpn01 ~]# cat hostip.txt 192.168.130.1 192.168.130.2 192.168.130.3 ...

  10. Shell学习笔记之shell脚本和python脚本实现批量ping IP测试

    0x00 将IP列表放到txt文件内 先建一个存放ip列表的txt文件: [root@yysslopenvpn01 ~]# cat hostip.txt 192.168.130.1 192.168.1 ...

随机推荐

  1. 探索多种数据格式:JSON、YAML、XML、CSV等数据格式详解与比较

    1. 数据格式介绍 数据格式是用于组织和存储数据的规范化结构,不同的数据格式适用于不同的场景.常见的数据格式包括JSON.YAML.XML.CSV等. 数据可视化 | 一个覆盖广泛主题工具的高效在线平 ...

  2. Java中split的用法及一个金典入坑题目

    split() 方法根据匹配给定的正则表达式来拆分字符串. 注意: . . $. | 和 * 等转义字符,必须得加 \\. 注意:多个分隔符,可以用 | 作为连字符. 语法 public String ...

  3. FR常用正则表达式

    禁止输入中文字符 ^[^\u4e00-\u9fa5]{0,}$

  4. WPF中封装一个自己的MessageBox

    前言 在WPF应用程序开发中,我们可以借助其强大灵活的设计能力打造出绚丽而富有创意的用户界面.然而,与这种高度定制化的界面相比,标准MessageBox却显得有些原始和古老.它的外观与现代.绚丽的应用 ...

  5. #扫描线,线段树#nssl 1459 空间复杂度

    分析 由于\(k\leq 10\)所以考虑用总方案减去经过两个差的绝对值\(\leq k\)的点的路径数 分类讨论一下发现要处理祖先关系和其它关系两种情况,考虑怎么去重,可以将这些答案看作一个个矩形, ...

  6. #差分约束,Floyd#洛谷 2474 [SCOI2008]天平

    题目 分析 非传统差分约束?? 注意只有结果保证惟一的选法才统计在内 这就为差分约束提供了依据 以左边重为例,假设现在选择的砝码为\(i,j\), 那么\(\because A+B>i+j\th ...

  7. 1.NCC算法实现及其优化[基础实现篇]

    NCC算法实现及其优化 本文将集中探讨一种实现相对简单,效果较好的模板匹配算法(NCC) \[R(x,y)= \frac{ \sum_{x',y'} (T'(x',y') \cdot I'(x+x', ...

  8. IDEA社区版,真香!

    IDEA(IntelliJ IDEA)是众多 Java 开发者的首选. 商业版的昂贵 IDEA 商业版(IntelliJ IDEA Ultimate)功能非常强大,能够满足 Java 开发的所有需求, ...

  9. 基于QUBO模型的多体分子对接

    技术背景 本文分享内容来自于最新的一篇名为Multibody molecular docking on a quantum annealer的文章,这篇文章的核心思想,是使用QUBO(二次受限二元优化 ...

  10. 面试连环炮系列(二十六):什么情况下JVM频繁发生full GC

    1. 什么情况下JVM频繁发生full GC? full gc触发条件是老年代空间不足,具体原因有四个: 系统并发高.执行耗时长或者创建对象过多,导致 young gc频繁,且gc后存活对象太多,但是 ...