
Python(爬虫/网站/人工智能)
Python(爬虫/网站/人工智能)等领域知识分享
Lansonli
优快云大数据领域博客专家,InfoQ写作社区2022年度影响力作者、华为云社区2022年度十佳博主、华为云享专家、阿里云专家博主、腾讯云开发者社区2022年度最佳作者、腾云先锋(TDP)核心成员、51CTO专家博主,全网二十万多粉丝,知名互联网公司大数据高级开发工程师
展开
-
Python七大原则,24种设计模式
七大设计原则: 1、单一职责原则【SINGLE RESPONSIBILITY PRINCIPLE】:一个类负责一项职责. 2、里氏替换原则【LISKOV SUBSTITUTION PRINCIPLE】:继承与派生的规则.(子类可替换父类) 3、依赖倒转原则【DEPENDENCE INVERSION PRINCIPLE】:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节...转载 2019-02-24 15:58:39 · 745 阅读 · 3 评论 -
PyCharm 配置远程python解释器和在本地修改服务器代码
使用场景先说说自己的使用场景,我是在什么情况下,需要将IDE配置成这样的环境来方便我的工作。首先,我需要在本地机子上写python代码,但是因为是机器学习相关的一些代码,有时候本机跑可能会很慢,或者根本跑不下来。而此时,我还有一台可用的服务器,上面配置了相应的python3环境和相应的机器学习库,比如tensorflow,keras,tflearn等等。因此通常需要将本地写好的代码上传到服...原创 2019-08-17 17:41:35 · 2194 阅读 · 2 评论 -
Django 布署6.5
布署从uwsgi、nginx、静态文件三个方面处理服务器介绍服务器:私有服务器、公有服务器 私有服务器:公司自己购买、自己维护,只布署自己的应用,可供公司内部或外网访问 公有服务器:集成好运营环境,销售空间或主机,供其布署自己的应用 私有服务器成本高,需要专业人员维护,适合大公司使用 公有服务器适合初创公司使用,成本低 常用的公有服务器,如阿里云、青云等,可根据需要,按流量收费...原创 2019-10-22 23:47:15 · 537 阅读 · 0 评论 -
Django celery6.4
celery官方网站 中文文档 示例一:用户发起request,并等待response返回。在本些views中,可能需要执行一段耗时的程序,那么用户就会等待很长时间,造成不好的用户体验 示例二:网站每小时需要同步一次天气预报信息,但是http是请求触发的,难道要一小时请求一次吗? 使用celery后,情况就不一样了 示例一的解决:将耗时的程序放到celery中执行 示例二的解决:使...原创 2019-10-21 12:10:28 · 448 阅读 · 0 评论 -
Django 全文检索6.3
全文检索全文检索不同于特定字段的模糊查询,使用全文检索的效率更高,并且能够对于中文进行分词处理 haystack:django的一个包,可以方便地对model里面的内容进行索引、搜索,设计为支持whoosh,solr,Xapian,Elasticsearc四种全文检索引擎后端,属于一种全文检索的框架 whoosh:纯Python编写的全文搜索引擎,虽然性能比不上sphinx、xapian、...原创 2019-10-20 18:16:33 · 474 阅读 · 0 评论 -
Django 缓存6.2
缓存对于中等流量的网站来说,尽可能地减少开销是必要的。缓存数据就是为了保存那些需要很多计算资源的结果,这样的话就不必在下次重复消耗计算资源 Django自带了一个健壮的缓存系统来保存动态页面,避免对于每次请求都重新计算 Django提供了不同级别的缓存粒度:可以缓存特定视图的输出、可以仅仅缓存那些很难生产出来的部分、或者可以缓存整个网站设置缓存通过设置决定把数据缓存在哪里,是数据库中...原创 2019-10-20 18:14:15 · 478 阅读 · 0 评论 -
Django 第三方引用富文本编辑器6.1
借助富文本编辑器,管理员能够编辑出来一个包含html的页面,从而页面的显示效果,可以由管理员定义,而不用完全依赖于前期开发人员 此处以tinymce为例,其它富文本编辑器的使用可以自行学习 使用编辑器的显示效果为:下载安装在网站pypi网站搜索并下载"django-tinymce-2.4.0" 解压tar zxvf django-tinymce-2.4.0.tar.gz...原创 2019-10-20 18:10:59 · 558 阅读 · 0 评论 -
Django 分页和使用Ajax5.3
分页Django提供了一些类实现管理数据分页,这些类位于django/core/paginator.py中Paginator对象Paginator(列表,int):返回分页对象,参数为列表数据,每面数据的条数属性count:对象总数 num_pages:页面总数 page_range:页码列表,从1开始,例如[1, 2, 3, 4]方法page(num):下标以1开始,如...原创 2019-10-20 18:05:08 · 692 阅读 · 0 评论 -
Django 上传图片和Admin站点5.2
上传图片当Django在处理文件上传的时候,文件数据被保存在request.FILES FILES中的每个键为<input type="file" name="" />中的name 注意:FILES只有在请求的方法为POST 且提交的<form>带有enctype="multipart/form-data" 的情况下才会包含数据。否则,FILES 将为一个空的类似于...原创 2019-10-20 17:58:34 · 535 阅读 · 0 评论 -
Django高级管理静态文件和中间件5.1
管理静态文件项目中的CSS、图片、js都是静态文件配置静态文件在settings 文件中定义静态内容STATIC_URL = '/static/'STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static'),]在项目根目录下创建static目录,再创建当前应用名称的目录mysite/static/myapp/在...原创 2019-10-17 22:13:46 · 491 阅读 · 0 评论 -
Django 验证码4.4
验证码在用户注册、登录页面,为了防止暴力请求,可以加入验证码功能,如果验证码错误,则不需要继续处理,可以减轻一些服务器的压力 使用验证码也是一种有效的防止crsf的方法 验证码效果如下图:验证码视图新建viewsUtil.py,定义函数verifycode 此段代码用到了PIL中的Image、ImageDraw、ImageFont模块,需要先安装Pillow(3.4.1)...原创 2019-10-14 21:55:58 · 493 阅读 · 0 评论 -
Django 模板HTML转义和CSRF4.3
Django对字符串进行自动HTML转义,如在模板中输出如下值:视图代码:def index(request): return render(request, 'temtest/index2.html', { 't1': '<h1>hello</h1>' ...原创 2019-10-06 17:57:36 · 561 阅读 · 0 评论 -
Django 模板继承4.2
模板继承模板继承可以减少页面内容的重复定义,实现页面内容的重用 典型应用:网站的头部、尾部是一样的,这些内容可以定义在父模板中,子模板不需要重复定义 block标签:在父模板中预留区域,在子模板中填充 extends继承:继承,写在模板文件的第一行 定义父模板base.html{ %block block_name%}这里可以定义默认值如果不定义默认值,则表示空字符串{ %e...原创 2019-09-21 15:23:00 · 616 阅读 · 0 评论 -
Django 模板4.1
模板介绍作为Web框架,Django提供了模板,可以很便利的动态生成HTML 模版系统致力于表达外观,而不是程序逻辑 模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视图可以使用任意一个模板,一个模板可以供多个视图使用 模板包含 HTML的静态部分 动态插入内容部分 Django模板语言,简写DTL,定义在django.template包中 由...原创 2019-09-14 16:03:46 · 633 阅读 · 0 评论 -
Django 状态保持3.5
状态保持http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状态 客户端与服务器端的一次通信,就是一次会话 实现状态保持的方式:在客户端或服务器端存储与会话有关的数据 存储方式包括cookie、session,会话一般指session对象 使用cookie,所有数据存储在客户端,注意不要存储敏感信息 推荐使用sesison方式,所有数据存储在服务器端,在客户端cook...原创 2019-09-14 15:55:12 · 578 阅读 · 0 评论 -
Django Response对象3.4
HttpResponse对象在django.http模块中定义了HttpResponse对象的API HttpRequest对象由Django自动创建,HttpResponse对象由程序员创建 不调用模板,直接返回数据#coding=utf-8from django.http import HttpResponsedef index(request): return Ht...原创 2019-09-13 15:47:48 · 562 阅读 · 0 评论 -
Django Request对象3.3
HttpReqeust对象服务器接收到http协议的请求后,会根据报文创建HttpRequest对象 视图函数的第一个参数是HttpRequest对象 在django.http模块中定义了HttpRequest对象的API属性下面除非特别说明,属性都是只读的 path:一个字符串,表示请求的页面的完整路径,不包含域名 method:一个字符串,表示请求使用的HTTP方法,常用值包...原创 2019-09-13 15:39:54 · 560 阅读 · 0 评论 -
Django 视图函数
定义视图本质就是一个函数 视图的参数 一个HttpRequest实例 通过正则表达式组获取的位置参数 通过正则表达式组获得的关键字参数 在应用目录下默认有views.py文件,一般视图都定义在这个文件中 如果处理功能过多,可以将函数定义到不同的py文件中新建views1.py#coding:utf-8from django.http import HttpRespo...原创 2019-09-13 14:58:51 · 557 阅读 · 0 评论 -
Django 视图URLconf3.1
URLconf在settings.py文件中通过ROOT_URLCONF指定根级url的配置 urlpatterns是一个url()实例的列表 一个url()对象包括: 正则表达式 视图函数 名称name 编写URLconf的注意: 若要从url中捕获一个值,需要在它周围设置一对圆括号 不需要添加一个前导的反斜杠,如应该写作'test/',而不应该写作'/test/'...原创 2019-09-13 14:15:15 · 540 阅读 · 0 评论 -
Django 模型查询2.3
简介查询集表示从数据库中获取的对象集合 查询集可以含有零个、一个或多个过滤器 过滤器基于所给的参数限制查询的结果 从Sql的角度,查询集和select语句等价,过滤器像where和limit子句 接下来主要讨论如下知识点 查询集 字段查询:比较运算符,F对象,Q对象 查询集在管理器上调用过滤器方法会返回查询集 查询集经过过滤器筛选后返回新的查询集,因此可以写成链式过滤...原创 2019-09-13 13:24:47 · 494 阅读 · 0 评论 -
Django 定义模型2.1
定义模型在模型中定义属性,会生成表中的字段 django根据属性的类型确定以下信息: 当前选择的数据库支持字段的类型 渲染管理表单时使用的默认html控件 在管理站点最低限度的验证 django会为表增加自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后,则django不会再生成默认的主键列 属性命名限制 不能是python的保留关键字 由于...原创 2019-09-09 23:57:07 · 478 阅读 · 0 评论 -
微信默认表情符号的代码对照表(微信公众号使用到)
先给大家推荐几个好玩的微信昵称工具:微信上标电话号码生成器 微信下划线昵称生成器 微信彩色昵称生成器在微信用户可以发送表情符号,如下图:这些符号公众平台是将其处理成文本,下面就列出微信默认表情符号代码对照表:表情图片 字符串代码 替换关键字 /::) 微笑 /::~ 伤心 /::B 美女 /::|...原创 2020-03-03 00:43:53 · 18521 阅读 · 1 评论 -
python 爬取手机app的信息
我们在爬取手机APP上面的数据的时候,都会借助Fidder来爬取。今天就教大家如何爬取手机APP上面的数据。Python学习资料或者需要代码、视频加Python学习群:516107834环境配置1、Fidder的安装和配置下载Fidder软件地址:链接:https://pan.baidu.com/s/15TI0oe-_BXb_6i8AaUhMFg 提取码:vm5f然后就是傻瓜式的安装,安装步骤很简单。在安装完成后,打开软件,进行如下设置:默认的8888端口2、手机的配置..原创 2020-06-28 23:11:14 · 5108 阅读 · 0 评论 -
Python反爬研究总结
反爬虫常见套路 判断user-agent 校验referer头 校验cookie 同一IP访问次数限制 js/ajax动态渲染页面 反反爬虫应对策略1、user-agent头校验每次请求设置随机user-agent头。可以引入fake_useragent模块或从http://useragentstring.com/pages/userage...原创 2020-03-21 01:03:13 · 1263 阅读 · 1 评论 -
Python使用Redis实现IP代理池
可以使用快代理,芝麻代理,蘑菇代理,讯代理等代理商提供API代理IP或者免费代理建立自己IP代理池#使用apscheduler库定时爬取ip,定时检测ip删除ip,做了2层检测,第一层爬取后放入redis——db0进行检测,成功的放入redis——db1再次进行检测,确保获取的代理ip的可用性import requests, redisimport pandasimport ran...原创 2020-02-25 23:31:50 · 1464 阅读 · 0 评论 -
Python 代理爬取网站数据
代理IP通过https://www.kuaidaili.com/free/ 获取,我使用的的是http协议的代理。根据自己需求选择http或者https 协议的页面。访问量会有增长,但效果不是非常理想,后面找时间在研究下、废话不多说,直接上代码。# -*- coding:utf-8 -*-import requestsimport randomimport timeim...原创 2020-02-23 12:05:17 · 969 阅读 · 0 评论 -
Python的Xpath介绍和语法详解
1.简介XPath是一门在XML和HTML文档中查找信息的语言,可以用来在XML和HTML文档中对元素和属性进行遍历XPath的安装Chrome插件XPath Helper点Chrome浏览器右上角:更多工具-----扩展程序-----谷歌商店--------勾选XPath Helper(需要翻墙)2.语法详解#1.选取节点'''/ 如果是在最前面,代...原创 2020-02-21 20:14:18 · 10846 阅读 · 1 评论 -
Python 爬虫框架Scrapy安装汇总
传统方式安装Scrapy(慎用)练习了基本的操作之后,当然就要找框架来进行爬虫实验啊。于是就在网上找Windows 64安装Scrapy的方法,查到的都是非常繁琐的安装方式,由于Scrapy有很多个依赖,所以在安装Scrapy之前你就要先安装他的所有的依赖啊,下面列举出部分依赖库:lxml模块 cryptography模块 pywin32模块 Twisted模块 pyOpenSSL模块等等...原创 2020-01-21 00:40:50 · 948 阅读 · 0 评论 -
Python:爬虫框架Scrapy的安装与基本使用
一、简单实例,了解基本。1、安装Scrapy框架这里如果直接pip3 install scrapy可能会出错。所以你可以先安装lxml:pip3 install lxml(已安装请忽略)。安装pyOpenSSL:在官网下载wheel文件。安装Twisted:在官网下载wheel文件。安装PyWin32:在官网下载wheel文件。下载地址:https://www.lfd....原创 2020-01-18 07:55:56 · 1743 阅读 · 0 评论 -
Python:从零搭建Redis-Scrapy分布式爬虫
Scrapy-Redis分布式策略:假设有四台电脑:Windows 10、Mac OS X、Ubuntu 16.04、CentOS 7.2,任意一台电脑都可以作为 Master端 或 Slaver端,比如: Master端(核心服务器) :使用 Windows 10,搭建一个Redis数据库,不负责爬取,只负责url指纹判重、Request的分配,以及数据的存储 Sl...原创 2019-11-30 23:10:10 · 2256 阅读 · 0 评论 -
Python:新浪网分类资讯爬虫
爬取新浪网导航页所有下所有大类、小类、小类里的子链接,以及子链接页面的新闻内容。效果演示图:items.pyimport scrapyimport sysreload(sys)sys.setdefaultencoding("utf-8")class SinaItem(scrapy.Item): # 大类的标题 和 url parentTitl...原创 2019-11-17 21:59:27 · 845 阅读 · 1 评论 -
Python:阳光热线问政平台爬虫
爬取投诉帖子的编号、帖子的url、帖子的标题,和帖子里的内容。items.pyimport scrapyclass DongguanItem(scrapy.Item): # 每个帖子的标题 title = scrapy.Field() # 每个帖子的编号 number = scrapy.Field() # 每个帖子的文字内容 conte...原创 2019-11-15 22:12:56 · 868 阅读 · 0 评论 -
Python:Scrapy实战项目手机App抓包爬虫
1. items.pyclass DouyuspiderItem(scrapy.Item): name = scrapy.Field()# 存储照片的名字 imagesUrls = scrapy.Field()# 照片的url路径 imagesPath = scrapy.Field()# 照片保存在本地的路径2. spiders/douyu.pyimpor...原创 2019-11-10 00:42:49 · 1322 阅读 · 0 评论 -
Python:Scrapy的settings
SettingsScrapy设置(settings)提供了定制Scrapy组件的方法。可以控制包括核心(core),插件(extension),pipeline及spider组件。比如 设置Json Pipeliine、LOG_LEVEL等。参考文档:http://scrapy-chs.readthedocs.io/zh_CN/1.0/topics/settings.html#topics...原创 2019-11-06 22:04:26 · 661 阅读 · 0 评论 -
Python:Downloader Middlewares
反反爬虫相关机制Some websites implement certain measures to prevent bots from crawling them, with varying degrees of sophistication. Getting around those measures can be difficult and tricky, and may someti...原创 2019-11-06 16:16:01 · 795 阅读 · 0 评论 -
Python:Resquest/Response
RequestRequest 部分源码:# 部分代码class Request(object_ref): def __init__(self, url, callback=None, method='GET', headers=None, body=None, cookies=None, meta=None, encoding='utf-8...原创 2019-11-06 11:32:53 · 843 阅读 · 0 评论 -
Python:CrawlSpiders
通过下面的命令可以快速创建 CrawlSpider模板 的代码:scrapy genspider -t crawl tencent tencent.com上一个案例中,我们通过正则表达式,制作了新的url作为Request请求参数,现在我们可以换个花样...class scrapy.spiders.CrawlSpider它是Spider的派生类,Spider类的设计原则是只爬取...原创 2019-11-05 12:05:00 · 557 阅读 · 0 评论 -
Python:Spider
Spider类定义了如何爬取某个(或某些)网站。包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item)。 换句话说,Spider就是您定义爬取的动作及分析某个网页(或者是有些网页)的地方。class scrapy.Spider是最基本的类,所有编写的爬虫必须继承这个类。主要用到的函数及调用顺序为:__init__(): 初始化爬虫名字和start_...原创 2019-11-04 13:54:44 · 1335 阅读 · 0 评论 -
Python:Item Pipeline
当Item在Spider中被收集之后,它将会被传递到Item Pipeline,这些Item Pipeline组件按定义的顺序处理Item。每个Item Pipeline都是实现了简单方法的Python类,比如决定此Item是丢弃而存储。以下是item pipeline的一些典型应用:验证爬取的数据(检查item包含某些字段,比如说name字段) 查重(并丢弃) 将爬取结果保存到文件或...原创 2019-11-03 15:01:55 · 795 阅读 · 0 评论 -
Python:Scrapy Shell
Scrapy终端是一个交互终端,我们可以在未启动spider的情况下尝试及调试代码,也可以用来测试XPath或CSS表达式,查看他们的工作方式,方便我们爬取的网页中提取的数据。如果安装了 IPython ,Scrapy终端将使用 IPython (替代标准Python终端)。 IPython 终端与其他相比更为强大,提供智能的自动补全,高亮输出,及其他特性。(推荐安装IPython)启动S...原创 2019-11-02 23:54:10 · 635 阅读 · 0 评论