为了给女友挑合适的内衣,我用 Python 爬了天猫内衣店的数据!

python 爬虫基础——淘宝评论 描述: 本文主要利用re模块简单的对淘宝爬虫进行介绍,简单的爬虫入门,便于理解,初学者可做参考,复杂的后续会不间断的更新。 目标: 1.学会使用re模块 2.对目标物品的评论进行抓取; 3.将抓取到的内容分析并保存到数据库。 过程: 1.首先设置返回的文本格式(非常重要) # coding:utf-8 2.导入爬虫过程所需的包(这里需用到requests 和 re 模块)  ... 阅读详情

接下来我们尝试用 Python 抓取天猫内衣销售数据,并分析得到中国女性普遍的罩杯数据、最受欢迎的内衣颜色是什么、评论的关键字。希望看完之后你能替你女朋友买上一件心怡的内衣。我们先看看分析得到的成果是怎样的?(讲的很详细,推荐跟着敲一遍)

Python资源共享群:484031800

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(买个内衣这么开心)

图片看不清楚的话,可以把图片单独拉到另一个窗口。 这里是分析了一万条数据得出的结论,可能会有误差,但是还是希望单身的你们能找到 0.06% 那一批妹纸。下面我会详细介绍怎么抓取天猫内衣销售数据,存储、分析、展示。

  • 研究天猫网站
  • 抓取天猫评论数据
  • 存储、分析数据
  • 可视化

研究天猫网站

我们随意进入一个商品的购买界面(能看到评论的那个界面),F12 开发者模式 -- Network 栏 -- 刷新下界面 -- 在如图的位置搜索 list_ 会看到一个 list_detail_rate.htm?itemId= ….

如下图:【单击】这个url 能看到返回的是一个 Json 数据 ,检查一下你会发现这串 Json 就是商品的评论数据 ['rateDetail']['rateList']

 

 

 

 

 

【双击】这个url 你会得到一个新界面,如图

 

 

 

 

 

看一下这个信息

 

 

 

 

 

这里的路径 就是获取评论数据的 url了。这个 URL 有很多参数你可以分析一下每个值都是干嘛的。

itemId 对应的是商品id, sellerId 对应的是店铺id,currentPage 是当前页。这里 sellerId 可以填任意值,不影响数据的获取。

抓取天猫评论数据

写一个抓取天猫评论数据的方法。getCommentDetail

# 获取商品评论数据
def getCommentDetail(itemId,currentPage):
    url = 'https://rate.tmall.com/list_detail_rate.htm?itemId=' + str(
        itemId) + '&sellerId=2451699564ℴ=3&currentPage=' + str(currentPage) + '&append=0callback=jsonp336'
    # itemId 产品id ;sellerId 店铺id 字段必须有值,但随意值就行
    html = common.getUrlContent(url)  # 获取网页信息
    # 删掉返回的多余信息
    html = html.replace('jsonp128(','') #需要确定是不是 jsonp128
    html = html.replace(')','')
    html = html.replace('false','"false"')
    html = html.replace('true','"true"')
    # 将string 转换为字典对象
    tmalljson = json.loads(html)
    return tmalljson

这里需要注意的是 jsonp128 这个值需要你自己看一下,你那边跟我这个应该是不同的。

在上面的方法里有两个变量,itemId 和 currentPage 这两个值我们动态来控制,所以我们需要获得 一批 商品id号 和 评论的最大页数 用来遍历。

写个获取商品评论最大页数的方法 getLastPage

# 获取商品评论最大页数
def getLastPage(itemId):
    tmalljson = getCommentDetail(itemId,1)
    return tmalljson['rateDetail']['paginator']['lastPage'] #最大页数

那现在怎么获取 产品的id 列表呢?我们可以在天猫中搜索商品关键字 用开发者模式观察

 

 

 

 

 

这里观察一下这个页面的元素分布,很容易就发现了 商品的id 信息,当然你可以想办法确认一下。

 

 

 

 

 

现在就写个 获取商品id 的方法 getProductIdList

# 获取商品id
def getProductIdList():
    url = 'https://list.tmall.com/search_product.htm?q=内衣' # q参数 是查询的关键字
    html = common.getUrlContent(url)  # 获取网页信息
    soup = BeautifulSoup(html,'html.parser')
    idList = []
    # 用Beautiful Soup提取商品页面中所有的商品ID
    productList = soup.find_all('div', {'class': 'product'})
    for product in productList:
        idList.append(product['data-id'])
    return idList

现在所有的基本要求都有了,是时候把他们组合起来。

在 main 方法中写剩下的组装部分

if __name__ == '__main__':
    productIdList = getProductIdList() #获取商品id
    initial = 0
    while initial < len(productIdList) - 30:  # 总共有60个商品,我只取了前30个
        try:
            itemId = productIdList[initial]
            print('----------', itemId, '------------')
            maxPage = getLastPage(itemId) #获取商品评论最大页数
            num = 1
            while num <= maxPage and num < 20: #每个商品的评论我最多取20 页,每页有20条评论,也就是每个商品最多只取 400 个评论
                try:
                    # 抓取某个商品的某页评论数据
                    tmalljson = getCommentDetail(itemId, num)
                    rateList = tmalljson['rateDetail']['rateList']
                    commentList = []
                    n = 0
                    while (n < len(rateList)):
                        comment = []
                        # 商品描述
                        colorSize = rateList[n]['auctionSku']
                        m = re.split('[:;]', colorSize)
                        rateContent = rateList[n]['rateContent']
                        dtime = rateList[n]['rateDate']
                        comment.append(m[1])
                        comment.append(m[3])
                        comment.append('天猫')
                        comment.append(rateContent)
                        comment.append(dtime)
                        commentList.append(comment)
                        n += 1
                    print(num)
                    sql = "insert into bras(bra_id, bra_color, bra_size, resource, comment, comment_time)  value(null, %s, %s, %s, %s, %s)"
                    common.patchInsertData(sql, commentList) # mysql操作的批量插入
                    num += 1
                except Exception as e:
                    num += 1
                    print(e)
                    continue
            initial += 1
        except Exception as e:
            print(e)

所有的代码就这样完成了,我现在把 common.py 的代码,还有 tmallbra.py 的代码都贴出来

# -*- coding:utf-8 -*-
# Author: zww
import requests
import time
import random
import socket
import http.client
import pymysql
import csv
# 封装requests
class Common(object):
    def getUrlContent(self, url, data=None):
        header = {
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
            'Accept-Encoding': 'gzip, deflate, br',
            'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
            'user-agent': "User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36",
            'cache-control': 'max-age=0'
        }  # request 的请求头
        timeout = random.choice(range(80, 180))
        while True:
            try:
                rep = requests.get(url, headers=header, timeout=timeout)  # 请求url地址,获得返回 response 信息
                # rep.encoding = 'utf-8'
                break
            except socket.timeout as e:  # 以下都是异常处理
                print('3:', e)
                time.sleep(random.choice(range(8, 15)))
            except socket.error as e:
                print('4:', e)
                time.sleep(random.choice(range(20, 60)))
            except http.client.BadStatusLine as e:
                print('5:', e)
                time.sleep(random.choice(range(30, 80)))
            except http.client.IncompleteRead as e:
                print('6:', e)
                time.sleep(random.choice(range(5, 15)))
        print('request success')
        return rep.text  # 返回的 Html 全文
    def writeData(self, data, url):
        with open(url, 'a', errors='ignore', newline='') as f:
            f_csv = csv.writer(f)
            f_csv.writerows(data)
        print('write_csv success')
    def queryData(self, sql):
        db = pymysql.connect("localhost", "zww", "960128", "test")
        cursor = db.cursor()
        results = []
        try:
            cursor.execute(sql)    #执行查询语句
            results = cursor.fetchall()
        except Exception as e:
            print('查询时发生异常' + e)
            # 如果发生错误则回滚
            db.rollback()
        # 关闭数据库连接
        db.close()
        return results
        print('insert data success')
    def insertData(self, sql):
        # 打开数据库连接
        db = pymysql.connect("localhost", "zww", "000000", "zwwdb")
        # 使用 cursor() 方法创建一个游标对象 cursor
        cursor = db.cursor()
        try:
            # sql = "INSERT INTO WEATHER(w_id, w_date, w_detail, w_temperature) VALUES (null, '%s','%s','%s')" % (data[0], data[1], data[2])
            cursor.execute(sql)    #单条数据写入
            # 提交到数据库执行
            db.commit()
        except Exception as e:
            print('插入时发生异常' + e)
            # 如果发生错误则回滚
            db.rollback()
        # 关闭数据库连接
        db.close()
        print('insert data success')
    def patchInsertData(self, sql, datas):
        # 打开数据库连接
        db = pymysql.connect("localhost", "zww", "960128", "test")
        # 使用 cursor() 方法创建一个游标对象 cursor
        cursor = db.cursor()
        try:
            # 批量插入数据
            # cursor.executemany('insert into WEATHER(w_id, w_date, w_detail, w_temperature_low, w_temperature_high) value(null, %s,%s,%s,%s)',datas)
            cursor.executemany(sql, datas)
            # 提交到数据库执行
            db.commit()
        except Exception as e:
            print('插入时发生异常' + e)
            # 如果发生错误则回滚
            db.rollback()
        # 关闭数据库连接
        db.close()
        print('insert data success')

上面需要注意,数据库的配置。

# -*- coding:utf-8 -*-
# Author: zww
from Include.commons.common import Common
from bs4 import BeautifulSoup
import json
import re
import pymysql
common = Common()
# 获取商品id
def getProductIdList():
    url = 'https://list.tmall.com/search_product.htm?q=内衣' # q参数 是查询的关键字,这要改变一下查询值,就可以抓取任意你想知道的数据
    html = common.getUrlContent(url)  # 获取网页信息
    soup = BeautifulSoup(html,'html.parser')
    idList = []
    # 用Beautiful Soup提取商品页面中所有的商品ID
    productList = soup.find_all('div', {'class': 'product'})
    for product in productList:
        idList.append(product['data-id'])
    return idList
# 获取商品评论数据
def getCommentDetail(itemId,currentPage):
    url = 'https://rate.tmall.com/list_detail_rate.htm?itemId=' + str(
        itemId) + '&sellerId=2451699564ℴ=3&currentPage=' + str(currentPage) + '&append=0callback=jsonp336'
    # itemId 产品id ;sellerId 店铺id 字段必须有值,但随意值就行
    html = common.getUrlContent(url)  # 获取网页信息
    # 删掉返回的多余信息
    html = html.replace('jsonp128(','') #需要确定是不是 jsonp128
    html = html.replace(')','')
    html = html.replace('false','"false"')
    html = html.replace('true','"true"')
    # 将string 转换为字典对象
    tmalljson = json.loads(html)
    return tmalljson
# 获取商品评论最大页数
def getLastPage(itemId):
    tmalljson = getCommentDetail(itemId,1)
    return tmalljson['rateDetail']['paginator']['lastPage'] #最大页数
if __name__ == '__main__':
    productIdList = getProductIdList() #获取商品id
    initial = 0
    while initial < len(productIdList) - 30:  # 总共有60个商品,我只取了前30个
        try:
            itemId = productIdList[initial]
            print('----------', itemId, '------------')
            maxPage = getLastPage(itemId) #获取商品评论最大页数
            num = 1
            while num <= maxPage and num < 20: #每个商品的评论我最多取20 页,每页有20条评论,也就是每个商品最多只取 400 个评论
                try:
                    # 抓取某个商品的某页评论数据
                    tmalljson = getCommentDetail(itemId, num)
                    rateList = tmalljson['rateDetail']['rateList']
                    commentList = []
                    n = 0
                    while (n < len(rateList)):
                        comment = []
                        # 商品描述
                        colorSize = rateList[n]['auctionSku']
                        m = re.split('[:;]', colorSize)
                        rateContent = rateList[n]['rateContent']
                        dtime = rateList[n]['rateDate']
                        comment.append(m[1])
                        comment.append(m[3])
                        comment.append('天猫')
                        comment.append(rateContent)
                        comment.append(dtime)
                        commentList.append(comment)
                        n += 1
                    print(num)
                    sql = "insert into bras(bra_id, bra_color, bra_size, resource, comment, comment_time)  value(null, %s, %s, %s, %s, %s)"
                    common.patchInsertData(sql, commentList) # mysql操作的批量插入
                    num += 1
                except Exception as e:
                    num += 1
                    print(e)
                    continue
            initial += 1
        except Exception as e:
            print(e)

存储、分析数据

所有的代码都有了,就差数据库的建立了。我这里用的是 MySql 数据库。

CREATE TABLE `bra` (
`bra_id`  int(11) NOT NULL AUTO_INCREMENT COMMENT 'id' ,
`bra_color`  varchar(25) NULL COMMENT '颜色' ,
`bra_size`  varchar(25) NULL COMMENT '罩杯' ,
`resource`  varchar(25) NULL COMMENT '数据来源' ,
`comment`  varchar(500) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '评论' ,
`comment_time`  datetime NULL COMMENT '评论时间' ,
PRIMARY KEY (`bra_id`)
) character set utf8
;

这里有两个地方需要注意, comment 评论字段需要设置编码格式为 utf8mb4 ,因为可能有表情文字。还有表需要设置为 utf8 编码,不然存不了中文。

建好了表,就可以完整执行代码了。(这里的执行可能需要点时间,可以做成多线程的方式)。看一下执行完之后,数据库有没有数据。

 

 

 

 

 

数据是有了,但是有些我们多余的文字描述,我们可以稍微整理一下。

update bra set bra_color = REPLACE(bra_color,'2B6521-无钢圈4-','');
update bra set bra_color = REPLACE(bra_color,'-1','');
update bra set bra_color = REPLACE(bra_color,'5','');
update bra set bra_size = substr(bra_size,1,3);

这里需要根据自己实际情况来修改。如果数据整理的差不多了,我们可以分析一下数据库的信息。

select 'A罩杯' as 罩杯, CONCAT(ROUND(COUNT(*)/(select count(*) from bra) * 100, 2) , "%") as 比例, COUNT(*) as 销量  from bra where bra_size like '%A'
union all select 'B罩杯' as 罩杯, CONCAT(ROUND(COUNT(*)/(select count(*) from bra) * 100, 2) , "%") as 比例, COUNT(*) as 销量  from bra where bra_size like '%B'
union all select 'C罩杯' as 罩杯, CONCAT(ROUND(COUNT(*)/(select count(*) from bra) * 100, 2) , "%") as 比例, COUNT(*) as 销量  from bra where bra_size like '%C'
union all select 'D罩杯' as 罩杯, CONCAT(ROUND(COUNT(*)/(select count(*) from bra) * 100, 2) , "%") as 比例, COUNT(*) as 销量  from bra where bra_size like '%D'
union all select 'E罩杯' as 罩杯, CONCAT(ROUND(COUNT(*)/(select count(*) from bra) * 100, 2) , "%") as 比例, COUNT(*) as 销量  from bra where bra_size like '%E'
union all select 'F罩杯' as 罩杯, CONCAT(ROUND(COUNT(*)/(select count(*) from bra) * 100, 2) , "%") as 比例, COUNT(*) as 销量  from bra where bra_size like '%F'
union all select 'G罩杯' as 罩杯, CONCAT(ROUND(COUNT(*)/(select count(*) from bra) * 100, 2) , "%") as 比例, COUNT(*) as 销量  from bra where bra_size like '%G'
union all select 'H罩杯' as 罩杯, CONCAT(ROUND(COUNT(*)/(select count(*) from bra) * 100, 2) , "%") as 比例, COUNT(*) as 销量  from bra where bra_size like '%H'
order by 销量 desc;

 

 

 

 

 

(想知道是哪6位小姐姐买的 G   (~ ̄▽ ̄)~ )

数据可视化

数据的展示,我用了是 mycharts 模块,如果不了解的可以去学习一下http://pyecharts.org/#/zh-cn/prepare

这里我就不细说了,直接贴代码看

# encoding: utf-8
# author zww
from pyecharts import Pie
from Include.commons.common import Common
if __name__ == '__main__':
    common = Common()
    results = common.queryData("""select count(*) from bra where bra_size like '%A' 
            union all select count(*) from bra where bra_size like '%B' 
            union all select count(*) from bra where bra_size like '%C' 
            union all select count(*) from bra where bra_size like '%D' 
            union all select count(*) from bra where bra_size like '%E' 
            union all select count(*) from bra where bra_size like '%F' 
            union all select count(*) from bra where bra_size like '%G'""")  # 获取每个罩杯数量
    attr = ["A罩杯", 'G罩杯', "B罩杯", "C罩杯", "D罩杯", "E罩杯", "F罩杯"]
    v1 = [results[0][0], results[6][0], results[1][0], results[2][0], results[3][0], results[4][0], results[5][0]]
    pie = Pie("内衣罩杯", width=1300, height=620)
    pie.add("", attr, v1, is_label_show=True)
    pie.render('size.html')
    print('success')
    results = common.queryData("""select count(*) from bra where bra_color like '%肤%' 
        union all select count(*) from bra where bra_color like '%灰%' 
        union all select count(*) from bra where bra_color like '%黑%' 
        union all select count(*) from bra where bra_color like '%蓝%' 
        union all select count(*) from bra where bra_color like '%粉%' 
        union all select count(*) from bra where bra_color like '%红%' 
        union all select count(*) from bra where bra_color like '%紫%'  
        union all select count(*) from bra where bra_color like '%绿%' 
        union all select count(*) from bra where bra_color like '%白%' 
        union all select count(*) from bra where bra_color like '%褐%' 
        union all select count(*) from bra where bra_color like '%黄%' """)  # 获取每个罩杯数量
    attr = ["肤色", '灰色', "黑色", "蓝色", "粉色", "红色", "紫色", '绿色', "白色", "褐色", "黄色"]
    v1 = [results[0][0], results[1][0], results[2][0], results[3][0], results[4][0], results[5][0], results[6][0], results[7][0], results[8][0], results[9][0], results[10][0]]
    pieColor = Pie("内衣颜色", width=1300, height=620)
    pieColor.add("", attr, v1, is_label_show=True)
    pieColor.render('color.html')
    print('success')

这一章就到这里了,该知道的你也知道了,不该知道的你也知道了。

内衣网站管理系统源码 管理目录:admin 后台登陆:login.asp 备注: 本登陆需要做两次登陆,第一次是使用用户名:admin 密码:admina 然后选择【退出登陆】在新的登陆框下输入:管理员:admin 密码:kyuanma 立即下载

相关推荐

某某公司内衣网站源码 v1.0

演示:以截图为准 管理员admin 密码handui 管理目录_zrt_manage 说明: 这个是基于asp+access的企业网站源码,数据库已设有有防下载,网站更安全 要修改网站,自定义你自己要的页面,和美化页面都是你自己完成,网站源码程序完整,后台功能强大。 调试运行环境:要安装IIS服务器(IIS的安装和配置,安装好后,在地址栏输入:http://127.0.0.1 即可访问网站)。 压缩包中已有精简asp服务软件,运行IIS.exe即可浏览测试

为了给女朋友买件心怡内衣,我用Python爬虫了天猫内衣售卖数据

点击上方“何俊林”,马上关注,每天早上8:50准时推送真爱,请置顶或星标大家好,希望各位能怀着正直、严谨、专业的心态观看这篇文章。ヾ(๑╹◡╹)ノ"接下来我们尝试用 Py...

欢迎关注公众号:【码农突围】,回复9999,可以获取一份LeetCode刷题笔记 990

Unity序列帧动画输出全攻略:Recorder+Timeline实战与透明通道处理

序列帧动画是游戏开发、影视动画和UI动效中的基础技术,指将连续动作分解为一系列静态图像并按序播放,形成动态视觉效果。其原理是通过时间轴精确控制每一帧的内容与时机,实现动画的逐帧呈现。在实时渲染领域,序列帧输出技术价值显著,它能够将动态内容高质量地转换为静态图像序列,便于跨平台复用、后期合成与资源分发。应用场景广泛,包括角色动画导出、技能特效制作、宣传片素材生成等。本文聚焦Unity引擎,深入解析如何利用Recorder与Timeline工具链,高效输出带Alpha透明通道的PNG序列帧,并重点攻克透明通道处

weixin_31556767的博客 327

BD第2课:抓取天猫商城胸罩销售数据

本例会使用 Urllib 3 模块从天猫商城获取胸罩销售数据,抓取胸罩销售数据分为如下两步: 抓取指定商品的所有销售数据(评论数据) 获取商品列表 由于天猫商城对每个商品返回的评论数是有限制的,最多只能返回 99 页,每页 20 条,也就是说,每个商品最多可以获得近 2000 条销售数据,为了尽可能获取更多的销售数据,应该从多个商品中获取销售数据,所以就需要抓取商品列表。为...

米饭超人的专栏 574

更新3ds时和用读卡器读取传输文件操作不当导致的tf卡损坏无法读取需要格式化时出现的问题以及不想丢失文件并且修复的详细解决方法

前言: 不小心按了同意更新而且tf/sd卡损坏导致了3ds打开后都是出现 Anerror has occurred:(红色的) Failed to apply 1 FIRM patch(es). Press any button to shotdown 这样的画面,按了任意键后就关机,我找了很多资料和大佬的回答解决了这些问题,现在记录一下。 一.不小心按了更新导致上述的画面 原因:是因为系统升级了,但是里面的Luma3DS还没有更新,属于是更新了但没有完全更新的状态。 **修复方法** 1.首先请按

give_me_fish的博客 1万+

关键词‖旋变传感器

旋转变压器(以下简称旋变)安装在永磁同步驱动电机的非传动端,其作用是检测转子的位置和速度。目前,通常采采用结构简单、坚固耐用、环境适应性好的磁阻式旋变作为位置传感器。

m0_72345077的博客 2151

Python爬虫实战(六) 天猫(淘宝)评论爬取与分析实战

爬取淘宝

shine4869的博客 2万+

从MRF8P9040N数据手册到ADS仿真:手把手教你搞定LDMOS功放设计(附完整模型下载)

本文详细解析了MRF8P9040N LDMOS功率放大器的数据手册关键参数,并提供了在ADS中进行仿真的完整指南。从模型导入、直流工作点验证到负载牵引与阻抗匹配设计,逐步指导工程师完成高效功放设计。文章还包含调试技巧和常见问题解决方案,帮助优化射频功放性能。

weixin_27015733的博客 490

为了给小女友挑合适罩杯的内衣,我用 Python 爬了淘宝内衣店的数据!

编辑: 开发者最前线 & 可可|作者:躲猫猫的猫,原文链接:https://www.cnblogs.com/zhaww/p/9636383.html大家好,希望...

机器学习算法与Python学习 3万+

华为服务器BMC方式安装系统-官方文档解读

华为服务器BMC方式安装系统 安装完成之后我们有两种方式去安装系统, > 一、服务器连接显示屏、键盘、鼠标和启动盘去启动服务器安装系统(弊端:需要制作单独启动盘并且需要硬件资源) > 二、使用BMC方式安装系统,也就是说使用网线连接我们的笔记本和服务器的BMC口或者mgt口去进行安装。

王明的博客 4579

杰理JL703N的SDK内部MIDI 音色库功能使用教程

本文介绍了MIDI琴按键解码和MIDI文件解码的实现方法。MIDI琴解码通过audio_dec_midi_ctrl.c文件实现,MIDI文件(mfa格式)解码则使用audio_dec_midi_file.c。使用前需将音色文件存放在SD卡或内置flash中(需确保四字节对齐),并在download.c中配置路径。同时需在板级配置中将FLASH设置为16Mbit以解决编译问题。关键注意事项包括音色文件的文件夹结构对齐要求和MIDI数据流的正确配置。

qq_42014563的博客 390

为了给女友挑合适的内衣,我用 Python 爬了天猫内衣店的数据

接下来我们尝试用 Python 抓取天猫内衣销售数据,并分析得到中国女性普遍的罩杯数据、最受欢迎的内衣颜色是什么、评论的关键字。希望看完之后你能替你女朋友买上一件心怡的内衣。我们先看看分析得到的成果是怎样的?(讲的很详细,推荐跟着敲一遍) 当然在学习Python的道路上肯定会困难,没有好的学习资料,怎么去学习呢? 学习Python中有不明白推荐加入交流群号:790921645 群里有志同道合的小...

人生苦短, 还不用Python? 1065

BLDC控制实验:方波、霍尔、开环、定速、正转

本文记录博主学习BLDC控制软件的过程。 文章目录1 概述2 软件架构及工具链2.1 软件架构2.2 工具链3 底层代码生成3.1 时钟配置3.2 按键输入配置 1 概述 本文是博主第一次做BLDC控制实验,目的仅仅是写代码让BLDC转起来,而暂时不考虑其他复杂的需求。 控制的方法是比较简单的六步换相法。利用电机内部的霍尔传感器,通过参考电机厂家给出的二二导通换相表,生成方波来控制电机。第一次实验为了简化需求,只考虑开环、定速、正转的情况: 开环:不考虑速度反馈,直接给PWM让电机转起来; 定速:不考虑速

u013288925的博客 1万+

我用python远程探查女友每天的网页访问记录,她不愧是成年人!

文末有干货“Python高校”,马上关注真爱,请置顶或星标过程:利用Python制作远程查看别人电脑的操作记录,与其它教程类似,都是通过邮件返回。利用程序得到目标电脑浏览器当中的访问记...

Python爬虫和机器学习专栏 1519

FPGA实现串口的任意字节数接收

基于FPGA的任意字节数(单字节、多字节)的串口(UART)接收,真的不来看看吗?

孤独的单刀 1万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

我总结的60页《Python之路.pdf》,都是干货!

点击上方“Python高校”,关注文末干货立马到手转自:Python与算法社区告别枯燥,通过学习有趣的小例子,扎实而系统的入门Python,从菜鸟到大师,个人觉得这是很靠谱的一种方法。...

Python爬虫和机器学习专栏 614

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Python 学习路线思维导图, 经典收藏!

点击上方“开发者技术前线”,选择“星标”13.21 在看 | 真爱转载自来源:KotlinPython | 责编:可可目前为止,我总结了Python的知识体系,并且暂时包括了十五章内...

开发者技术前线-DevolperFront 606

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Python骚操作:Python控制Excel实现自动化办公

点击上方“Python高校”,关注文末干货立马到手1.安装2.操作一个简单的Excel文档操作注释及代码:操作完成后,数据存储结果如下:3. 操作简单Excel文档并添加数据格式操作代...

Python爬虫和机器学习专栏 1333

周六想和女友浪不知道怎么选酒店?Python告诉你全国著名高校附近酒店评论!...

点击上方“Python高校”,关注文末干货立马到手/1 前言/简介:本文介绍如何用python爬取全国著名高校附近的酒店点评,并进行分析,带大家看看著名高校附近的酒店怎么样。/2 具...

Python爬虫和机器学习专栏 410

VS Code Python 插件 2 月更新,Jupyter Notebook 编辑器性能提升 2 倍!

点击上方“Python高校”,关注文末干货立马到手来源 | OSCHINA 社区 [http://www.oschina.net]VS Code 的 Python 扩展发布了 2 月更新...

Python爬虫和机器学习专栏 201

3 秒钟把你硬盘内的小姐姐全部揪出来排队!

点击上方“开发者技术前线”,选择“星标”13:21 在看真爱作者丨网黑哥来源丨网罗灯下黑(wldxh8)如果需要你把某个文件夹的全部文件名列个清单出来,你会怎么做?截图吗?不,我是说需...

开发者技术前线-DevolperFront 608

程序猿幽默动图

点击上方“Python高校”,关注文末干货立马到手来自:新浪微博@IT程序猿老板说这项目投资了一个亿产品经理说有新需求了产品经理以为说清楚了,而程序员也以为理解到位老板说,招了两个实习生...

Python爬虫和机器学习专栏 381

武大学生用 Python 敲出樱花开放 | 附源码

点击上方“Python高校”,关注文末干货立马到手来自:武汉大学今年的武汉大学没有了往年的人山人海,但是美丽的樱花依然在春天里独自绽放。为此,武大开通了...

Python爬虫和机器学习专栏 623

PyCharm 2020.1 稳定版发布

点击上方“Python高校”,关注文末干货立马到手来源:开源中国PyCharm 2020.1 稳定版已发布,这也是 PyCharm 今年发布的首个主要版本。新版的亮点包括更方便地 re...

Python爬虫和机器学习专栏 1270
上一篇: Python学习的必备法宝,随查随用,太方便了吧!
下一篇: Python爬虫入门,煎蛋网XXOO图片抓取!
普通网友
博客等级 码龄7年 438粉丝 263原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值