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

Python抓取微博评论


写在前面

一直以为微博的东西比较好搞,没想到还是有点坑。新浪把评论的模块保存在一个json字典里,真的是够了。。。前20页可以轻易爬取,21页以后需要获取前一页最后一个评论的ID以及已经展示的评论总数。

包和全局变量

#时间管理带师
import time
#网页请求
import requests
#解析网页
from bs4 import BeautifulSoup as bs

#统计已经展示的评论数量
num = 0
#请自行登录新浪获取cookie
cookie = {}
#请求头
headers = {
    'sec-fetch-dest':'empty

Read more

Scrapy框架的自定义配置


多spider

创建多个spider,需要为每个spider分配不同的管道(不要在settings.py中添加管道),首先在pipelines.py中定义不同的类,然后修改对应的py文件:

class PythonSpider(scrapy.Spider):
    name = 'csdn'
    allowed_domains = ['www.csdn.net']
    start_urls = ['https://www.csdn.net/nav/python']
    custom_settings = {
        '

Read more

最近的状态


失眠

不知什么原因,10天前出现失眠,一开始只是中午睡不着,慢慢的晚上也很难入睡,而且越想睡就越睡不着,昨天几乎是一宿没睡,早上起来精神恍惚,却仍然无法入睡,我想,可能需要运动一下,再不行就需要就医了,暂时不敲代码了吧。。

12月21日

目前状况好了很多,不知道是小柴胡的功效,还是跑步的原因,也可能我根本就不曾失眠,只是因为空调吹热风,室内太闷而难以入睡,而我对自己睡眠状况过度关注,引起越想睡反而越睡不着。

Read more

Python模拟二维码登录百度


写在前面

前段时间写了利用BDUSS到达百度首页,这一次尝试使用二维码模拟登录,目前网上能搜到的相关内容基本失效了,但是思路基本不变,无非是百度改了些参数。本文较为复杂,要求对python的requests模块以及Chrome审查元素有一定了解,我不确定自己是否能完全讲明白,讲多少是多少吧,各位看官请坐。

查找接口

二维码地址

打开Chrome浏览器,清理掉baidu.com下的所有cookie,如果没有则忽略。打开百度首页,F12审查元素,在右上角点击登录,切换到二维码登录,可以看到NetWork里面出现了一些相关内容:



查看getqrcode?lp=pc:



这里的imgurl代

Read more