分类目录归档:python

Python仿制腾讯大数据星云图


写在前面

带伙可以先看下腾讯的图,非常漂亮


腾讯位置大数据星云图


再看看本文代码绘制的图,逼格降低99%



但是轮廓还是有的对吧!!!!话不多说,我们开始吧!

用到的包

import re
import requests
import json
from fake_useragent import UserAgent
import pandas as pd
import numpy as np
from shapely.geometry import Point
from shapely.geometry.polygon import Polygon
from pyecharts.ch

Read more

抓取高途课堂课程和教师信息


写在前面

笔者偶尔参加了高途课堂的辅导老师面试,当时也没做什么准备,被HR问懵逼了,对公司也没做什么了解,自己的职业规划也不清楚,过去的经历一问也三不知,临走还把自己简历要了回去,以前我绝对是不敢厚着脸皮做这种事情的,只能说入职半年有进步。我更像是去闹着玩的,实际上我就是闲的了,我一开始就知道自己不适合做这种有销售性质的工作,太久不参加面试想练练手,给我投递橄榄枝的这位HR就成了我的“工具人”,如果HR本R读到这篇文章,且让我给您道个歉,顺便说一句,对于您问我“工作环境是什么”这件事我颇有微词。这篇文章就让我尝试了解一下高途课堂吧,抓一下他们的课程和教师信息。

直接上代码

我觉得没有必要写面向

Read more

理解python中的参数(*和**的使用)


写在前面

在向函数传递参数时,有时候会看到*args**kwargs的字样,本文尝试理解个中含义。

使用args

将参数转换为元组形式保存到arg中

def foo(*args):
    print(args)

if __name__ == '__main__':
    foo(1,2)

output:
(1, 2)

使用kwargs

将参数转换为字典形式(必须指定参数进行传递)

def foo(**kwargs):
    print(kwargs)

if __name__ == '__main__':
    foo(a=1,b=2)

out

Read more

Python继承父类的属性


写在前面

有时候新类需要继承父类的属性,但是又要定义一些自己的属性,可以通过以下方法来实现。

第一种方法

这种方法即不重写新类的init方法,完全继承父类,缺点是无法初始化新的属性,只能执行函数添加属性。

class Test1(object):
    def __init__(self):
        self.name = 'test1'
        self.number = 1

class Test2(Test1):
    pass

第二种方法

同样完全继承了父类的属性,而且可以重写某个字段,或者拓展新的属性。

class Test1(object):

Read more

Python装饰器探幽


写在前面

python装饰器就是用于拓展原来函数功能的一种函数,这个函数的特殊之处在于它的返回值也是一个函数,使用python装饰器的好处就是在不用更改原函数的代码前提下给函数增加新的功能。

案例分析

如果要测试一个函数执行花费的时间,一般会采用如下方式:

def func():
    startTime = time.time()
    print("hello")
    time.sleep(1)
    print("world")
    endTime = time.time()
    print("{}ms".fo

Read more

抓取B站评论并可视化


写在前面

最近一位很火的央视美女主持,没错,说的就是王冰冰,入驻B站啦,她在2020年的最后一天发布了一条vlog,疯狂涨粉200w,成功跻身2020百大up,那么B站的网友们在评论区说了什么呢?让我们一起来看看吧!

思路分析

B站评论接口如下:


https://api.bilibili.com/x/v2/reply


参数有:

#固定值,可省略
'jsonp':'jsonp'
#固定值,不可缺省
'type':'1'
#评论页数
"pn":1
#排序方式,2代表从旧到新,1代表从新到旧,默认为1
'

Read more

汽车之家口碑字体反爬


写在前面

汽车之家的反爬可以说是教科书级别,其反爬虫策略经过多次迭代,已经从最初的静态字体反爬变成了动态字体+js混淆,动态字体的破解与猫眼大同小异,加密的字多一些而已。js混淆比较麻烦,通过requests库请求网页无法得到字体对应的编码,看到的是一堆js函数,看着头都大了,不知道汽车之家是否对每一个加密的字都写了函数,无法洞悉其中的规则,那只能选择selenium获取网页了,效率比较低,但是很实用(小声bb:时间主要花在计算新旧字体的欧式距离上了,因为有90个字,不改进算法要执行差不多8000次)

动态字体映射

参考以前的文章


破解猫眼字体反爬


这里写一下如何建立基础字体映射,首先获取

Read more

两种方式抓取王者荣耀皮肤


写在前面

抓完了LOL,再来试试王者荣耀,单纯写scrapy的话没什么意思,就用requests和scrapy分别实现了抓取功能,并记录一个需要解决的问题。

Scrapy

创建项目

scrapy startproject wzryskin
cd wzry
scrapy genspider wzryskinspider "pvp.qq.com"

items.py

import scrapy

class WzryskinItem(scrapy.Item):
    # define the fields for your item here like:
    # name

Read more

使用scrapy抓取图片


写在前面

scrapy作为强大的爬虫框架,当然可以用来抓取图片,本文以英雄联盟全部英雄皮肤为例,记录一下抓取图片并自定义图片保存路径的方法。

创建爬虫

#创建项目
scrapy startproject lolskin
#创建spider
scrapy genspider lolskinspider "lol.qq.com"

配置item

items.py

import scrapy

class LolskinItem(scrapy.Item):
    # define the fields for your item here like:
    # name = 

Read more

再探Scrapy爬虫框架


写在前面

爬虫框架也是需要掌握的知识,这次尝试抓取药监局的化妆品信息,并保存到excel和MongoDB数据库中。

目标地址


化妆品生产许可信息服务平台


准备工作

#创建scrapy项目
scrapy startproject NMPA
#进入项目目录
cd NMPA
#创建spider
scrapy genspider nmpaspider "scxk.nmpa.gov.cn"

修改items

import scrapy

class NmpaItem(scrapy.Item):
    # define the fields for your item here 

Read more