def

手把手教你使用Python抓取QQ音乐数据(第三弹)

别等时光非礼了梦想. 提交于 2020-10-25 04:03:23
【一、项目目标】 通过 手把手教你使用Python抓取QQ音乐数据(第一弹) 我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名、专辑名、播放链接。 通过 手把手教你使用Python抓取QQ音乐数据(第二弹) 我们实现了获取 QQ 音乐指定歌曲的歌词和指定歌曲首页热评。 此次我们在项目(二)的基础上获取更多评论并生成词云图,形成手把手教你使用Python抓取QQ音乐数据(第三弹)。 【二、需要的库】 主要涉及的库有:requests、json、wordcloud、jieba 如需更换词云图背景图片还需要numpy库和PIL库(pipinstall pillow) 【三、项目实现】 1.首先回顾一下,下面是项目(二)获取指定歌曲首页热评的代码; def get_comment(i): url_3 = ' https://c.y.qq.com/base/fcgi-bin/fcg_global_comment_h5.fcg ' headers = { 'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36', /# 标记了请求从什么设备,什么浏览器上发出 } params = {'g

IO plan命令备忘

痴心易碎 提交于 2020-10-25 00:54:44
本文为基于ICCII的IO plan的备忘录 创建bump array 使用命令create_bump_array IO ring + corner cell 其实,直接用create cell然后手工挪过去也不费事,反正也就一次。后面通过读def的方式读进去就好了。 IO constraints 通常power pad都是事先根据空余位置,算好了。具体放在什么位置也都定了。很少用到这种工具自动加power pad的方式。如果是pad limit,就少放点power io, 如果是core limit,power io的数量就可以适当多点。 matching type 通过create_matching_type和add_matching_type来进行pad和bump的匹配。 工具会在相同matching type的pad和bump中,采取就近原则,进行匹配。 特殊的matching type 例如,PG net的bump&pad 一对多,多对多时: mark RDL 准备 首先创建routing rule。其次,设置routing angle为45° 特殊RDL绕线 adjacent route split route differential route 差分绕线,使得两者绕线长度等长。 paralell route (differential) 绕线长度等长

python 矩阵乘法

心已入冬 提交于 2020-10-24 22:47:42
1.列表作为数据结构 def MatrixProduct(a, b): temp2 = [] for i in range(len(a)): temp1 = [] for j in range(len(b[0])): total = 0 for k in range(len(a[0])): total += a[i][k] * b[k][j] temp1.append(total) temp2.append(temp1) return temp2 print(MatrixProduct([[1,0],[0,0]], [[0,1],[1,0]])) 时间复杂度太高O(n^3) 以后再想办法用矩阵快速幂来优化,降低时间复杂度 2.numpy中ndarray作为数据结构 (注意numpy数组的a*b指的并不是矩阵乘法,a.dot(b)或者numpy.dot(a,b)) import numpy as np def MatrixProduct(a, b): a=np.array(a) b=np.array(b) c=np.dot(a,b) return c.tolist() print(MatrixProduct([[1,0],[0,0]], [[0,1],[1,0]])) 3.numpy中mat作为数据结构 这种矩阵格式就可以a*b了 import numpy as np def

深入理解Python中的元类(metaclass)

与世无争的帅哥 提交于 2020-10-24 18:41:52
注:本文原稿来自stackoverflow, 原文链接 ,目前已收获5k高赞。 一、类也是对象 在理解元类之前,你需要先掌握Python中的类。Python中类的概念借鉴于Smalltalk,这显得有些奇特。在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段。在Python中这一点仍然成立: >>> class ObjectCreator(object): … pass … >>> my_object = ObjectCreator() >>> print my_object < __main__ .ObjectCreator object at 0x8974f2c> 但是,Python中的类还远不止如此。类同样也是一种对象。是的,没错,就是对象。只要你使用关键字class,Python解释器在执行的时候就会创建一个对象。下面的代码段: >>> class ObjectCreator(object): … pass … 将在内存中创建一个对象,名字就是ObjectCreator。 这个对象(类)自身拥有创建对象(类实例)的能力,而这就是为什么它是一个类的原因。 但是,它的本质仍然是一个对象,于是乎你可以对它做如下的操作: 1) 你可以将它赋值给一个变量 2) 你可以拷贝它 3) 你可以为它增加属性 4) 你可以将它作为函数参数进行传递 下面是示例: >>> print

python函数

人盡茶涼 提交于 2020-10-24 16:16:31
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创见函数,这被叫做用户自定义函数。 你可以定义一个由自己想要功能的函数,以下是简单的规则: 函数代码块以def关键词开头,后接函数标识符名称和圆括号()。 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。 函数内容以冒号起始,并且缩进。 Return[expression]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。 函数语法如下 def functionname( parameters ): "函数_文档字符串" function_suite return [expression] 例子: [root@python day3]# cat print_fun.py #!/usr/bin/env python def printme(string): #自定义一个函数名叫printme,有一个参数string print string #打印参数string printme('This is the first function.')

Python18行代码做出来这样有点浪漫,又有点极客的“内涵”图

与世无争的帅哥 提交于 2020-10-24 13:30:30
今天就来教大家这个套路: 如何使用 Python 来做出来这样有点浪漫,又有点极客的“内涵”图。 当然,能不能靠它得到心仪对象的青睐,就要靠你(命)了。(๑•́₃ •̀๑) 那么要怎么做呢? 很多人学习python,不知道从何学起。 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。 很多已经做案例的人,却不知道如何去学习更加高深的知识。 那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码! QQ群:1097524789 我们先找一张女神的高清图片(尽量分辨率高点的吧,效果会好点)。这里以一张原图是这样的(分辨率是:3840*2160)。 使用我写好的脚本运行后,就生成了这样一张图,请你点击,放大再放大。惊喜? 然后将这张图片发给你的女神,具体话术你自己想咯 好吧,相比女神来说,你可能更在意这是如何实现的。 其实原理很简单,代码也还不到 20 行。 首先,来讲讲原理。 事实上,每一张图片都是由一个一个的像素点所组成的。而每个像素点,都有自己的颜色,其颜色可以用一个数组来表示:(a,b,c),其中每位数的取值范围都是 0-255。 比如(0,0,0)代表黑色,(255,255,255)代表白色。 当像素点足够多的时候,这张照片就是我们所说的高清照片。 而如果当像素点太少,我们的肉眼就能感知到明显的锯齿感。 用 Excel

【极客思考】计算机网络:Wireshark抓包分析TCP中的三次握手与四次挥手

廉价感情. 提交于 2020-10-24 11:40:38
【 摘要 】 本文重点分析计算机网络中TCP协议中的握手和挥手的过程。 【前提说明】 前段时间突然看到了一篇关于TCP/IP模型的文章,心想这段时间在家里也用wireshark抓了点包,那么想着想着就觉得需要复习一下网络知识,于是就有这篇博文的诞生。当然网上关于TCP相关的知识点也是芸芸,闲着无事也可以多google深入理解一下,本文重点在分析TCP协议中的握手和挥手的过程。 【抓包前准备】 既然要抓包,我的装备是个人电脑,操作系统是Mac OS。抓包工具是wireshark,至于怎么安装和一些基本的操作, 可以点击参考这篇文章。 用本地电脑模拟server和client,都是localhost的地址,但是我选择的是不同的端口进行标识。server的端口号:12345;client的端口号:50784。因为是用的本机做的实验,所以wireshark监听的不是网卡而是Loopback:lo0,如图所示: 以下是我模拟client和server的代码: 1)server端 -Python 代码 01 #! /usr/bin/python 02 # -*- coding: utf-8 -*- 03 04 import socket 05 06 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 07 08 server

DRF throttles 限流源码阅读

狂风中的少年 提交于 2020-10-24 11:04:18
限流 地址 流程分析 入口 实现 1.0 限流在 view 中的入口 dispatch initial check_throttles: 限流器检查 views.py from django.views.generic import View class APIView(View): throttle_classes = api_settings.DEFAULT_THROTTLE_CLASSES # setting.py def get_throttles(self): """ Instantiates and returns the list of throttles that this view uses. """ return [throttle() for throttle in self.throttle_classes] def throttled(self, request, wait): """ If request is throttled, determine what kind of exception to raise. """ raise exceptions.Throttled(wait) def dispatch(self, request, *args, **kwargs): """ `.dispatch()` is pretty much the

python爬虫爬取豆瓣电视剧数据

╄→尐↘猪︶ㄣ 提交于 2020-10-24 07:57:37
作为一个python小白,在下面的问题中出错: 1.因为豆瓣页面的数据加载涉及到异步加载,所以需要通过浏览器获取到真正的网页链接。 2.将字典转化为DataFrame以后写入.csv文件。DataFrame是一个表单一样的数据结构。 3.从网页获取的json数据的处理。 代码: import re import requests from bs4 import BeautifulSoup import time import random import string import logging import json import jsonpath import pandas as pd import pdb User_Agents = [ ' Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50 ' , ' Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50 ' , ' Mozilla/5.0 (compatible;

zabbix 二次开发之调用api接口获取历史数据

与世无争的帅哥 提交于 2020-10-24 07:54:39
前面一篇写了数据同步和模板绑定,zabbix其实能做的事还蛮多。 zabbix提供了一个非常好的前端展示页面,但是我们总觉得不太好看;我们可以进一步调用他的api通过获取每一个监控项的历史数据,然后打到我们的监控平台上;主流的有rrdtool方式和highcharts方式;rrdtool略显复杂,还要学习rrdtool之类的几个聚合方式。相对而言我更喜欢highcharts的方式,出图简便,只需要提供数据和时间戳组成的json数据就够了,之前也介绍过具体;那么这里我们先拿出我们想要的数据。 zabbix的api读取方式如下: 1、通过post方式传入用户名密码获取token秘钥。 2、获取所有主机的hostid和name。 3、通过hostid获取每个监控项目的item和对应的key。 4、通过传入的itemid获取相对应的历史数据。 以上步骤都是需要传入token才能执行操作,pipy已经提供了第三方插件,让我们省去了这一部分的操作;具体参考: https://pypi.python.org/pypi/zabbix-client/0.1.1;zabbix api文档请参考官方文档。想多写点代码可以看小马哥的博客:http://www.xiaomastack.com/2014/08/17/rrdtool-1/。 1、获取主机的代码: def get_hosts(self):