<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Amoor的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sabian2</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sabian2]]></copyright><item><title><![CDATA[浏览器复制的curl转换为Python requests库代码的python代码]]></title><link>https://blog.youkuaiyun.com/sabian2/article/details/124089604</link><guid>https://blog.youkuaiyun.com/sabian2/article/details/124089604</guid><author>sabian2</author><pubDate>Mon, 11 Apr 2022 01:27:15 +0800</pubDate><description><![CDATA[是的，你没看错，读起来有点拗口，但真的会很好用。
这是转换浏览器中复制的curl语句的代码
代码来源于curltopy库的源代码。需要的朋友可以前往github查看
安装后发现直接按照他的介绍运行不起来，所以这里修改了一些地方，才可以正常使用！
如何复制curl命令
复制的时候选curl bash，另外一个cmd以^作为换行，会影响解析

如果是Charles这种工具里，选第二个带request的选项，将复制出来的字符串的url放到curl 开头，不然url会解析错误

charles的和浏览器的区别
一个]]></description><category></category></item><item><title><![CDATA[Django获取文件的方式及文件MD5的多种方法]]></title><link>https://blog.youkuaiyun.com/sabian2/article/details/123963621</link><guid>https://blog.youkuaiyun.com/sabian2/article/details/123963621</guid><author>sabian2</author><pubDate>Tue, 05 Apr 2022 01:10:43 +0800</pubDate><description><![CDATA[最近对文件处理比较多，给大家分享下文件的使用方法
获取文件
    files = request.FILES.get('my_file')

文件的属性
file.name          上传的文件名称
file.content_type   内容类型
file.size           文件字节大小
file.read()         文件内容

获取MD5值的3种方式
chunks的方式
    import hashlib
    files = request.FILES.get('m]]></description><category></category></item><item><title><![CDATA[echarts和pyecharts的主题河流图-两种风格对比]]></title><link>https://blog.youkuaiyun.com/sabian2/article/details/122630828</link><guid>https://blog.youkuaiyun.com/sabian2/article/details/122630828</guid><author>sabian2</author><pubDate>Fri, 21 Jan 2022 23:23:50 +0800</pubDate><description><![CDATA[前面echarts和pyecharts都做了简单的介绍，这里用主题河流图做对照，来展示这里面的区别
echarts式
echarts式的主题河流图主要以网页内的配置为主，django的视图函数起到传递数据的作用。前面我改编的主题河流图还有缩放数据的功能
视图函数
def myriver(request):
    names = ['Tom', 'may', 'jim']
    today = datetime.now().date()
    data = []
    for i in range(5]]></description><category></category></item><item><title><![CDATA[Pyecharts库及其与Django的结合使用]]></title><link>https://blog.youkuaiyun.com/sabian2/article/details/122611065</link><guid>https://blog.youkuaiyun.com/sabian2/article/details/122611065</guid><author>sabian2</author><pubDate>Fri, 21 Jan 2022 00:37:14 +0800</pubDate><description><![CDATA[在上一周发表的echarts和Django的结合使用中，有粉丝提出想要学习下pyecharts，我特地花了点时间研究了下，写出此篇文章，希望喜欢的能够给我点点赞~
这篇文章不会提到太多的语法，也不会把每个图形都讲一遍，还是那句话，作为初学者，我们先要模仿着写。官方文档对图形使用的解析已经很清楚了，我只抓取我感觉比较重要的讲一些。
代码仓库地址还是原来的那个地址，示例资源和静态资源文件都已经集成到这个项目里了。
https://gitcode.net/sabian2/myechartdemo
简介
Echar]]></description><category></category></item><item><title><![CDATA[Python中Django与Echarts的结合用法]]></title><link>https://blog.youkuaiyun.com/sabian2/article/details/122482400</link><guid>https://blog.youkuaiyun.com/sabian2/article/details/122482400</guid><author>sabian2</author><pubDate>Thu, 13 Jan 2022 22:51:49 +0800</pubDate><description><![CDATA[今天为大家分享Echarts在Python 的Django框架中的使用
项目仓库为https://gitcode.net/sabian2/myechartdemo.git
公开仓库，大家可以通过如下命令获取项目文件
git clone https://gitcode.net/sabian2/myechartdemo.git

什么是Echarts
Echarts是一款基于JavaScript的数据可视化图表库，提供直观，生动，可交互，可个性化定制的数据可视化图表。官网地址为https://echarts.a]]></description><category></category></item><item><title><![CDATA[《2021爱智先行者—初体验-图文解析精灵1号边缘计算机的安装与调试、启动自带的WiFi路由器功能、编写安装一个计算器小程序》]]></title><link>https://blog.youkuaiyun.com/sabian2/article/details/121375318</link><guid>https://blog.youkuaiyun.com/sabian2/article/details/121375318</guid><author>sabian2</author><pubDate>Wed, 17 Nov 2021 16:34:35 +0800</pubDate><description><![CDATA[都说万事开头难，这篇文章能够帮助大家对精灵1号的设备开发有个简单顺利的开头，介绍了组装、设备激活和使用、开发工具搭建、简单程序开发四个部分，希望能对大家有所帮助。]]></description><category></category></item><item><title><![CDATA[用scrapy-redis分布式框架采集站点的漂亮图片，代理服务器，随机UA技术]]></title><link>https://blog.youkuaiyun.com/sabian2/article/details/121185256</link><guid>https://blog.youkuaiyun.com/sabian2/article/details/121185256</guid><author>sabian2</author><pubDate>Sun, 07 Nov 2021 15:34:28 +0800</pubDate><description><![CDATA[分享点以前做的项目，攒点项目经验
前面讲了怎么做scrapy-redis的配置，这次做个采集的实例
网站是彼岸图网：https://pic.netbian.com/4kmeinv/
分析
采集上面这个链接分类下的所有图片，分析网站是148页，读取下一页的链接前往下一页，读取上面的图片链接进入详情取大图的地址

运行效果
redis的存储

中途停了以后也可以在命令行重新输入命令继续

再次运行它还是从那里开始接着继续
数据处理
数据库设计
数据库存储大图的标题和下载url
建表语句为

CREATE TAB]]></description><category></category></item><item><title><![CDATA[简单易用，几行命令实现使用scrapyd部署]]></title><link>https://blog.youkuaiyun.com/sabian2/article/details/121176547</link><guid>https://blog.youkuaiyun.com/sabian2/article/details/121176547</guid><author>sabian2</author><pubDate>Sat, 06 Nov 2021 11:44:28 +0800</pubDate><description><![CDATA[要部署首先你要有个写好的scrapy项目，刚创建的也可以
安装
安装scrapyd和scrapyd-client两个库
在项目中terminal启动
scrapyd

部署
先在scrapy.cfg 里面配置

scrapyd-deploy my -p mypro

启动爬虫
my是建立的项目名称，sta是爬虫的名称，这个是在前面创建项目时指定的
curl http://localhost:6800/schedule.json -d project=my -d spider=sta   

运行效果
此时可]]></description><category></category></item><item><title><![CDATA[Scrapy-redis的分布式爬虫改造，基本概念和配置]]></title><link>https://blog.youkuaiyun.com/sabian2/article/details/121174631</link><guid>https://blog.youkuaiyun.com/sabian2/article/details/121174631</guid><author>sabian2</author><pubDate>Sat, 06 Nov 2021 11:04:10 +0800</pubDate><description><![CDATA[这个包名字就是scrapy-redis
利用redis为scrapy提供分布式队列、调度器和去重的功能
设置配置
设置中主要修改
ITEM_PIPELINES = {
   'my.pipelines.MyPipeline': 300,
    'scrapy_redis.pipelines.RedisPipeline': 400,
}

# 分布式的配置
SCHEDULER = "scrapy_redis.scheduler.Scheduler"  # 调度
DUPEFILTER_CLASS = "scr]]></description><category></category></item><item><title><![CDATA[Scrapy笔记，基本的流程与方法介绍]]></title><link>https://blog.youkuaiyun.com/sabian2/article/details/121159276</link><guid>https://blog.youkuaiyun.com/sabian2/article/details/121159276</guid><author>sabian2</author><pubDate>Fri, 05 Nov 2021 19:26:33 +0800</pubDate><description><![CDATA[安装
pip install scrapy
有时候会有错误，cryptograph库存在问题

进入rust网站，下载自己的系统版本
https://www.rust-lang.org/tools/install

运行后，确认安装，出现

选1default，安装成功后会在自动退出，用检查版本的方式看是否安装成功

这样的话scrapy不能在虚拟环境安装，只能在自己的主环境安装，会影响一些包

可以重新建个虚拟环境继承系统环境

启动项目
创建项目
scrapy startproject my


创建s]]></description><category></category></item><item><title><![CDATA[用边缘检测算法和像素点对比处理滑块验证码原理解析]]></title><link>https://blog.youkuaiyun.com/sabian2/article/details/121139362</link><guid>https://blog.youkuaiyun.com/sabian2/article/details/121139362</guid><author>sabian2</author><pubDate>Thu, 04 Nov 2021 14:54:38 +0800</pubDate><description><![CDATA[算法原理
边缘检测算法
提供滑块图，背景图作为数据，检测缺口左边缘的坐标
最终检测出来的区域在红线框内

像素点对比
需要原图和缺口背景图作为数据，原理是检测第一个像素点数值不一样的位置的x坐标作为参考的移动距离，但是对有假缺口的数据不是很友好，提取到第一个就停了，如果假缺口在前面就会识别失败。

比如这样的就会输出第一个缺口的位置
但用cv2做边缘检测，可以很正常的找出数据位置

从网页读数据
网页上获取图片数据
canvas元素可以通过toDataURL函数转换为指定格式的数据

然后在selenium]]></description><category></category></item><item><title><![CDATA[用ddddocr识别图形字符验证码]]></title><link>https://blog.youkuaiyun.com/sabian2/article/details/121127415</link><guid>https://blog.youkuaiyun.com/sabian2/article/details/121127415</guid><author>sabian2</author><pubDate>Wed, 03 Nov 2021 19:13:05 +0800</pubDate><description><![CDATA[函数很简单，这里主要分享流程
目标
这是一个网站 的注册页面

找接口
先在抓包工具或者浏览器检查界面找到验证码的位置

测试
测试下重放，发现数据可以正常发送，那就拷贝headers里面的一些参数和cookie到Postman做测试
逐步添加headers信息直到能拿到数据

组合带带弟弟编码
拷贝python-requests代码到编译器，修改下即可
为什么是带带弟弟，因为他就叫这个名字

get_time_stamp13函数用于生成13位时间戳，作为文件名，文件会保存到本地进行比较
ddddocr的用]]></description><category></category></item><item><title><![CDATA[Charles手机端抓包，抓取小说软件整本小说的示例]]></title><link>https://blog.youkuaiyun.com/sabian2/article/details/121083994</link><guid>https://blog.youkuaiyun.com/sabian2/article/details/121083994</guid><author>sabian2</author><pubDate>Mon, 01 Nov 2021 18:46:27 +0800</pubDate><description><![CDATA[基本配置
点击如下界面，根据提示修改手机的网络代理参数


自己手机连接同一个网络，设置代理服务器参数

设置好后Charles会有一个提示消息，点击alllow允许就可以了
然后手机上也要装证书，访问那个网站，如果老是卡在界面不下载的话，建议给文件改个名字

提示要到CA中心去安装

找到CA证书，进去安装即可

这样采集的数据就不是乱码了

查看小说软件数据
查看手机小说软件的接口，如果他不对数据加密的话就能成功了

这个软件的数据就没加密，可以直接看
我打开了一本书，在上面的位置找到了书的信息
去po]]></description><category></category></item><item><title><![CDATA[第一百篇，真实可重现，详细实现昨日剩下的功能]]></title><link>https://blog.youkuaiyun.com/sabian2/article/details/121069908</link><guid>https://blog.youkuaiyun.com/sabian2/article/details/121069908</guid><author>sabian2</author><pubDate>Mon, 01 Nov 2021 12:53:57 +0800</pubDate><description><![CDATA[这是上一篇Charles抓取数据包操作的实践详细教程，半自动是因为先要取得自己的token和cookie来修改为自己的登录账号，id也需要自己修改。修改的地方基本都替换掉用了中文提示
具体内容放到项目文档里了
项目地址：https://codechina.youkuaiyun.com/sabian2/mooc.git
先解决上一篇代码直接使用的SSL错误
上一篇的代码是从Postman直接获得的，Postman也有这个问题，只是关了设置里的ssl就没了，但在python程序运行中，一上来发现访问出错
requests.]]></description><category></category></item><item><title><![CDATA[史上最细，Charles抓包工具的基本配置、查找接口的方法、爬取中国大学Mooc整门课程]]></title><link>https://blog.youkuaiyun.com/sabian2/article/details/121061237</link><guid>https://blog.youkuaiyun.com/sabian2/article/details/121061237</guid><author>sabian2</author><pubDate>Sun, 31 Oct 2021 20:06:12 +0800</pubDate><description><![CDATA[今天给大家分享Charles这个软件，讲解基本配置和接口查询操作，最后用一个中国大学mooc的示例来展示Charles在Windows端的用法。内容丰富，技术要点详细，站里面搜索中国大学MOOC爬虫的不是讲了一半就关注公众号的，还是讲了一点的，或者只有代码的，都没我讲的详细，这就是对抗路的细节，欢迎阅读点赞评论收藏！]]></description><category></category></item><item><title><![CDATA[重磅！全站首发，新鲜出炉，1024特辑，手把手教你采集 高德地图 搜索结果，获取全国海底捞信息并可视化]]></title><link>https://blog.youkuaiyun.com/sabian2/article/details/120929565</link><guid>https://blog.youkuaiyun.com/sabian2/article/details/120929565</guid><author>sabian2</author><pubDate>Sun, 24 Oct 2021 15:29:40 +0800</pubDate><description><![CDATA[这一篇讲如何用简单的工具获取高德地图的搜索结果数据，并做基本的可视化分析
这里以海底捞为示例，希望大家有所收获]]></description><category></category></item><item><title><![CDATA[小白也能轻松上手selenium，无忧获取淘宝商品信息，献给手把手教的会的你]]></title><link>https://blog.youkuaiyun.com/sabian2/article/details/120891776</link><guid>https://blog.youkuaiyun.com/sabian2/article/details/120891776</guid><author>sabian2</author><pubDate>Thu, 21 Oct 2021 22:23:13 +0800</pubDate><description><![CDATA[本文在python环境下使用selenium库，利用浏览器模拟来采集淘宝指定搜索关键字的商品数据，内容丰富，一看就会，一学就能上手，一拷贝就能自己用起来，举一反三！]]></description><category></category></item><item><title><![CDATA[2021-10-21 Flask-03 请求与响应，cookies与session，操作这些得心应手]]></title><link>https://blog.youkuaiyun.com/sabian2/article/details/120871809</link><guid>https://blog.youkuaiyun.com/sabian2/article/details/120871809</guid><author>sabian2</author><pubDate>Thu, 21 Oct 2021 17:09:59 +0800</pubDate><description><![CDATA[请求对象request
访问如下路径，查看request的属性
@blue.route('/myrequest',methods=['GET','POST'])
def myrequest():
    for k in request.__dict__:
        print(k)
    return '  '


编辑模板查看这些属性
# 查看请求对象
@blue.route('/myrequest',methods=['GET','POST'])
def myrequest():
    fo]]></description><category></category></item><item><title><![CDATA[2021-10-21-Flask-04 模型关系的建立，增删改查的演示，一篇文章让你直接搞懂Flask模型]]></title><link>https://blog.youkuaiyun.com/sabian2/article/details/120880357</link><guid>https://blog.youkuaiyun.com/sabian2/article/details/120880357</guid><author>sabian2</author><pubDate>Thu, 21 Oct 2021 17:09:05 +0800</pubDate><description><![CDATA[项目地址：https://codechina.youkuaiyun.com/sabian2/myflask.git
这节是模型操作
1：N的模型操作
创建模型
在user_model.py创建两个模型类：用户模型和卡模型
db是flask的SQLAlchemy对象，在模块init文件中已定义
from models import db

#用户模型
class UserModel(db.Model):
    #主键
    id = db.Column(db.Integer,primary_key=True,auto]]></description><category></category></item><item><title><![CDATA[2021-10-20-Flask-02 路由与参数解析]]></title><link>https://blog.youkuaiyun.com/sabian2/article/details/120869534</link><guid>https://blog.youkuaiyun.com/sabian2/article/details/120869534</guid><author>sabian2</author><pubDate>Wed, 20 Oct 2021 17:47:53 +0800</pubDate><description><![CDATA[项目地址：https://codechina.youkuaiyun.com/sabian2/myflask.git
这一节讲路由和参数的解析
获取链接参数
类似于这样的链接，直接从网址中读取参数
http://localhost:5000/user/pathtest?username=dsadsa&amp;password=abcdefg

下面看视图代码
在user_view.py中
@blue.route('/pathtest',methods=['GET','POST'])
def pathtest():
   ]]></description><category></category></item></channel></rss>