<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Taneost的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Taneost</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Taneost]]></copyright><item><title><![CDATA[selenium中selenium.webdriver.common.by之By的用法]]></title><link>https://blog.youkuaiyun.com/Taneost/article/details/108325086</link><guid>https://blog.youkuaiyun.com/Taneost/article/details/108325086</guid><author>Taneost</author><pubDate>Mon, 31 Aug 2020 17:04:19 +0800</pubDate><description><![CDATA[#从selenium.webdriver.common.by 导入By包进行元素定位
from selenium.webdriver.common.by import By 

By是selenium中内置的一个class，在这个class中有各种方法来定位元素
By所支持的定位器的分类：

CLASS_NAME = ‘class name’
CSS_SELECTOR = ‘css selector’
ID = ‘id’
LINK_TEXT = ‘link text’
NAME = ‘name’
PARTI]]></description><category></category></item><item><title><![CDATA[Selenium中使用CSS定位元素及一些处理]]></title><link>https://blog.youkuaiyun.com/Taneost/article/details/106917024</link><guid>https://blog.youkuaiyun.com/Taneost/article/details/106917024</guid><author>Taneost</author><pubDate>Tue, 23 Jun 2020 10:29:36 +0800</pubDate><description><![CDATA[Selenium中使用CSS定位元素前言CSS功能快捷键合理的创建标题，有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能，丰富你的文章UML 图表FLowchart流程图导出与导入导出导入
前言
最近项目中使用selenium做web自动化开发，发现用xpath定位只能固定位置的，例如多个卡片相同标签就可以用css来定位并处]]></description><category></category></item><item><title><![CDATA[Selenium中使用Cookies绕过登录]]></title><link>https://blog.youkuaiyun.com/Taneost/article/details/106321825</link><guid>https://blog.youkuaiyun.com/Taneost/article/details/106321825</guid><author>Taneost</author><pubDate>Sun, 24 May 2020 21:51:05 +0800</pubDate><description><![CDATA[Selenium中使用Cookies绕过登录
在使用selenium测试后台时常常每个流程都需要走登录流程，这样自然比较浪费时间。如果遇到登录需要输入验证码等情况，就可能出师未捷身先死。
在Web应用中，登录状态通常是通过Cookie中对应的session id验证的。也是就是说，我们只要携带上登录后的Cookies，浏览器就会自动识别我们为登录状态。由于Selenium每次启动的浏览器是一个隔离的环境，不能直接使用本地已经保存的Cookies值，我们需要通过driver的add_cookie()方法手动添]]></description><category></category></item><item><title><![CDATA[中间人攻击mitmproxy详解]]></title><link>https://blog.youkuaiyun.com/Taneost/article/details/105758113</link><guid>https://blog.youkuaiyun.com/Taneost/article/details/105758113</guid><author>Taneost</author><pubDate>Sat, 25 Apr 2020 22:19:46 +0800</pubDate><description><![CDATA[什么是mitmproxy
mitmproxy是一个支持HTTP和HTTPS的抓包程序，有类似Fiddler、Charles的功能，只不过它是一个控制台的形式操作。
mitmproxy还有两个关联组件。一个是mitmdump，这是它的核心组件，监听信息流，和使用其他语言（python,js）控制。它是mitmproxy的命令行接口，利用它我们可以对接Python脚本，用Python实现监听后的处理。...]]></description><category></category></item><item><title><![CDATA[Python中celery的简单使用]]></title><link>https://blog.youkuaiyun.com/Taneost/article/details/105757575</link><guid>https://blog.youkuaiyun.com/Taneost/article/details/105757575</guid><author>Taneost</author><pubDate>Sat, 25 Apr 2020 21:54:50 +0800</pubDate><description><![CDATA[1.什么是Clelery
- Celery是一个简单、灵活且可靠的，处理大量消息的分布式系统
专注于实时处理的异步任务队列
同时也支持任务调度
- Celery 通过消息机制进行通信，通常使用中间人（Broker）作为客户端和职程（Worker）调节。启动一个任务，客户端向消息队列发送一条消息，
然后中间人（Broker）将消息传递给一个职程（Worker），最后由职程（Worker）进行执行中间...]]></description><category></category></item><item><title><![CDATA[Python中MD5加密]]></title><link>https://blog.youkuaiyun.com/Taneost/article/details/105104699</link><guid>https://blog.youkuaiyun.com/Taneost/article/details/105104699</guid><author>Taneost</author><pubDate>Wed, 25 Mar 2020 21:25:33 +0800</pubDate><description><![CDATA[MD5加密


博客背景
前段时间写爬虫发现参数中多出一串加密的字符串（例如：4b5ec33ae3d8ba830178dafea1cc2611），然后通过浏览器搜索发现使用了MD5加密，所以才想写一篇博客记录一下。


具体的浏览器分析过程再次就不多赘述了，网上有很多参考文档，这里重点说一下Python中实现MD5的方法。

要为一个数据块计算MD5散列，首先要创建散列对象，然后增加数据，最后调用...]]></description><category></category></item><item><title><![CDATA[Python中时间与日期转换]]></title><link>https://blog.youkuaiyun.com/Taneost/article/details/104399280</link><guid>https://blog.youkuaiyun.com/Taneost/article/details/104399280</guid><author>Taneost</author><pubDate>Wed, 19 Feb 2020 20:03:23 +0800</pubDate><description><![CDATA[1、将数字转换为日期（数字格式例如：1546358400）
data_time = 1546358400
timeArray = time.localtime(data_time)
Time = time.strftime("%Y-%m-%d", timeArray)
print(Time) # 输出为 2019-01-02

2、将时间转换为数字（例如时间戳）
timeStamp = time....]]></description><category></category></item><item><title><![CDATA[Redis如何保持和Mysql数据一致]]></title><link>https://blog.youkuaiyun.com/Taneost/article/details/104399022</link><guid>https://blog.youkuaiyun.com/Taneost/article/details/104399022</guid><author>Taneost</author><pubDate>Wed, 19 Feb 2020 19:45:51 +0800</pubDate><description><![CDATA[1、Mysql持久化数据，Redis只读数据
Redis在启动后，从数据库家加载数据
读请求：

不要求强一致性的读请求，走redis，要求强一致性的直接从mysql读取

写请求：

数据首先都写到数据库，之后更新redis（先写redis再写mysql，如果写入失败事务回滚会造成redis中存在脏数据）



一般缓存是这样的：
#读的顺序是先读缓存，后读数据库
#写的顺序是先写数据库，然后写...]]></description><category></category></item><item><title><![CDATA[requests.exceptions.ChunkedEncodingError: ('Connection broken: IncompleteRead(0 bytes read)']]></title><link>https://blog.youkuaiyun.com/Taneost/article/details/103938845</link><guid>https://blog.youkuaiyun.com/Taneost/article/details/103938845</guid><author>Taneost</author><pubDate>Sat, 11 Jan 2020 17:41:12 +0800</pubDate><description><![CDATA[requests.exceptions.ChunkedEncodingError: (‘Connection broken: IncompleteRead(0 bytes read)’, IncompleteRead(0 bytes read))解决方法：
问题：爬虫requests请求时发生如下错误

解决方法：
解决：

requests请求时，后面加上参数：stream=True。
参考外国...]]></description><category></category></item><item><title><![CDATA[常见爬虫的分类]]></title><link>https://blog.youkuaiyun.com/Taneost/article/details/102780280</link><guid>https://blog.youkuaiyun.com/Taneost/article/details/102780280</guid><author>Taneost</author><pubDate>Mon, 28 Oct 2019 14:18:19 +0800</pubDate><description><![CDATA[网络爬虫按照系统结构和实现技术，大致可以分为以下几种类型：通用网络爬虫（General Purpose Web Crawler）、聚焦网络爬虫（Focused Web Crawler）、增量式网络爬虫（Incremental Web Crawler）、深层网络爬虫（Deep Web Crawler）。 实际的网络爬虫系统通常是几种爬虫技术相结合实现的 。
1.通用网络爬虫（General Purp...]]></description><category></category></item><item><title><![CDATA[Python中的pymysql模块]]></title><link>https://blog.youkuaiyun.com/Taneost/article/details/101230176</link><guid>https://blog.youkuaiyun.com/Taneost/article/details/101230176</guid><author>Taneost</author><pubDate>Mon, 23 Sep 2019 22:35:30 +0800</pubDate><description><![CDATA[1、什么是PyMySQL?


为了使python连接上数据库，你需要一个驱动，这个驱动是用于与数据库交互的库。


PyMySQL ： 这是一个使Python连接到MySQL的库，它是一个纯Python库。


PyMySQL是一个开源项目 ：https://github.com/PyMySQL/PyMySQL


作用：
将经常用于查询的某些字段定义索引后，数据库利用索引定位技术，能够大大加快...]]></description><category></category></item><item><title><![CDATA[Python爬虫面试题（一）]]></title><link>https://blog.youkuaiyun.com/Taneost/article/details/101229456</link><guid>https://blog.youkuaiyun.com/Taneost/article/details/101229456</guid><author>Taneost</author><pubDate>Mon, 23 Sep 2019 22:21:27 +0800</pubDate><description><![CDATA[一、HTTP与HTTPS的区别？


概念：

HTTP：超文本传输协议，是互联网应用最广泛的一种网络协议，所有的www文件都必须遵守这
个标准，是一个客户端与服务器端请求和应答的标准（TCP），用于从www服务器传输超文本到本地
浏览器的传输协议。
HTTPS：安全套接字层超文本传输协议，以安全为目标的HTTP通道，简单的说就是HTTP安全版，
即在HTTP下加入SSL层，HTTPS的安全基础是...]]></description><category></category></item><item><title><![CDATA[破解有道翻译]]></title><link>https://blog.youkuaiyun.com/Taneost/article/details/101228808</link><guid>https://blog.youkuaiyun.com/Taneost/article/details/101228808</guid><author>Taneost</author><pubDate>Mon, 23 Sep 2019 22:03:29 +0800</pubDate><description><![CDATA[破解有道翻译
1、先获取到翻译的接口（http://fanyi.youdao.com/translate_o?smartresult=dict&amp;smartresult=rule）
2、想要翻译单词，肯定要提交表单，查看Network中From-Data所提交的内容
3、分析提交内容发现，i是你所提交的内容，salt是时间戳，ts是时间戳少一位，sign是通过加密算法加密，通过页面返回的JS...]]></description><category></category></item><item><title><![CDATA[Django中的Form组件]]></title><link>https://blog.youkuaiyun.com/Taneost/article/details/100109829</link><guid>https://blog.youkuaiyun.com/Taneost/article/details/100109829</guid><author>Taneost</author><pubDate>Tue, 27 Aug 2019 22:30:12 +0800</pubDate><description><![CDATA[一、Form组件
Django 中的form组件实现了如下的功能
1、生成页面可用的HTML标签
2、对用户提交的数据进行校验
3、保留上次输入内容（回显）
（一）普通方式手写注册功能


（二）使用Form组件
使用form组件步骤
（1）、导入form组件：from django import forms
（2）、编写类继承forms.Form
（3）、创建对象
（4）、生成页面
{{xx.a...]]></description><category></category></item><item><title><![CDATA[Django中的中间件（middleware）]]></title><link>https://blog.youkuaiyun.com/Taneost/article/details/100109440</link><guid>https://blog.youkuaiyun.com/Taneost/article/details/100109440</guid><author>Taneost</author><pubDate>Tue, 27 Aug 2019 22:20:22 +0800</pubDate><description><![CDATA[一、middleware（中间件）
1、什么是中间件


问题：如何过滤掉没有登陆就访问其他页面？
解决方法

使用装饰器（但是我们要过滤的页面很多，这个方法就很不方便了）
使用中间件（使用此方法要注意，中间件是全局操作，所以要慎用）



概念：

中间件是一个用来处理Django的请求和响应的一个类，可以改变全局范围内Django的输入和输出。简单理解就是中间件是帮助我们在视图函数执行之前和执...]]></description><category></category></item><item><title><![CDATA[Django模板系统]]></title><link>https://blog.youkuaiyun.com/Taneost/article/details/98784165</link><guid>https://blog.youkuaiyun.com/Taneost/article/details/98784165</guid><author>Taneost</author><pubDate>Wed, 07 Aug 2019 21:03:49 +0800</pubDate><description><![CDATA[一、Django Template Language（DTL）

DTL 即 Django模板语言，Django 模板是一些文本字符串，作用是把文档的表现与数据区分开。模板定义一些占位符和基本的逻辑（模板标签），规定如何显示文档。通常，模板用于生成 HTML。
Django 1.8 还支持另一个流行的模板引擎，Jinja2。

二、使用Django模板
导入 Template 和 Context ...]]></description><category></category></item><item><title><![CDATA[Django中的反向代理]]></title><link>https://blog.youkuaiyun.com/Taneost/article/details/98783153</link><guid>https://blog.youkuaiyun.com/Taneost/article/details/98783153</guid><author>Taneost</author><pubDate>Wed, 07 Aug 2019 20:45:06 +0800</pubDate><description><![CDATA[URL反向代理（别名）
使用反向代理，解决硬编码问题。
拓展：

硬编码是将数据直接嵌入到程序或其他可执行对象的源代码中的软件开发实践，与从外部获取数据或在运行时生成数据不同。 硬编码数据通常只能通过编辑源代码和重新编译可执行文件来修改。

为解决这一问题django使用url反向代理来解决
例如：
在urls.py文件中加载路由
re_path（r'^index/$',view.index）,
...]]></description><category></category></item><item><title><![CDATA[scoket]]></title><link>https://blog.youkuaiyun.com/Taneost/article/details/98510284</link><guid>https://blog.youkuaiyun.com/Taneost/article/details/98510284</guid><author>Taneost</author><pubDate>Mon, 05 Aug 2019 19:27:10 +0800</pubDate><description><![CDATA[我们深谙信息交流的价值，那网络中进程之间如何通信，如我们每天打开浏览器浏览网页 时，浏览器的进程怎么与web服务器通信的？当你用QQ聊天时，QQ进程怎么与服务器或你好友所在的QQ进程通信？这些都得靠socket？那什么是 socket？socket的类型有哪些？还有socket的基本函数，这些都是本文想介绍的。本文的主要内容如下：
1、网络中进程之间如何通信？
2、Socket是什么？
3、soc...]]></description><category></category></item><item><title><![CDATA[Django中Model模块的操作-创建各种表结构（上）]]></title><link>https://blog.youkuaiyun.com/Taneost/article/details/97619629</link><guid>https://blog.youkuaiyun.com/Taneost/article/details/97619629</guid><author>Taneost</author><pubDate>Sun, 28 Jul 2019 21:14:03 +0800</pubDate><description><![CDATA[Django框架功能齐全自带数据库操作功能，本文主要介绍Django的ORM框架
到目前为止，当我们的程序涉及到数据库相关操作时，我们一般都会这么搞：

创建数据库，设计表结构和字段
使用 MySQLdb 来连接数据库，并编写数据访问层代码
业务逻辑层去调用数据访问层执行数据库操作

ORM是什么？：(在django中，根据代码中的类自动生成数据库的表也叫–code first)
ORM：Obje...]]></description><category></category></item><item><title><![CDATA[浏览器的一个请求从发送到返回都经历什么？]]></title><link>https://blog.youkuaiyun.com/Taneost/article/details/97619311</link><guid>https://blog.youkuaiyun.com/Taneost/article/details/97619311</guid><author>Taneost</author><pubDate>Sun, 28 Jul 2019 20:56:08 +0800</pubDate><description><![CDATA[目录

按下"g"键
回车键按下
产生中断[非USB键盘]
(Windows)一个 WM_KEYDOWN 消息被发往应用程序
(Mac OS X)一个 KeyDown NSEvent被发往应用程序
(GNU/Linux)Xorg 服务器监听键码值
解析URL
输入的是 URL 还是搜索的关键字？
转换非 ASCII 的 Unicode 字符
检查 HSTS 列表
DNS 查询
ARP 过程
使用套...]]></description><category></category></item></channel></rss>