读书:《精通Django 3 Web开发》

manage.py:命令行工具,内置多种方式与项目进行交互。

asgi.py:用于启动异步通信服务

settings.py:项目的配置文件

urls.py:项目的路由设置,设置网站的具体网址内容

wsgi.py:全称为Python Web Server Gateway Interface,即Python服务器网关接口

创建应用XXX , pythonmanage.py startapp XXX

migrations:用于生成数据迁移文件,通过数据迁移文件可自动在数据库里生成相应的数据表。

apps.py:当前App的配置信息

admin.py:用于设置当前App的后台管理功能。

models.py:定义数据库的映射类,每个类可以关联一张数据表

tests.py:自动化测试的模块

views.py:视图文件,处理功能的业务逻辑

启动项目 python manage.py runserver 8001

内置的应用功能

admin:内置的后台管理系统。

auth:内置的用户认证系统。

contenttypes:记录项目中所有model元数据(Django的ORM框架)。sessions:Session会话功能,用于标识当前访问网站的用户身份,记录相关用户信息。

messages:消息提示功能。

staticfiles:查找静态资源路径。

中间件(Middleware)是一个用来处理Django请求(Request)和响应(Response)的框架级别的钩子,它是一个轻量、低级别的插件系统,用于在全局范围内改变Django的输入和输出。

配置属性MIDDLEWARE的数据格式为列表类型,每个中间件的设置顺序是固定的,如果随意变更中间件很容易导致程序异常

SecurityMiddleware:内置的安全机制,保护用户与网站的通信安全。

SessionMiddleware:会话Session功能。

LocaleMiddleware:国际化和本地化功能。

CommonMiddleware:处理请求信息,规范化请求内容。

CsrfViewMiddleware:开启CSRF防护功能。

AuthenticationMiddleware:开启内置的用户认证系统。

MessageMiddleware:开启内置的信息提示功能。

XFrameOptionsMiddleware:防止恶意程序单击劫持。

静态资源的配置分别由配置属性STATIC_URL、STATICFILES_DIRS和STATIC_ROOT完成

新增数据

get_or_create方法,若存在返回数据表已有的数据信息,否则数据新增

update_or_create方法,若存在,则进行更新操作,否则在数据表里新增数据

数据显示视图、数据操作视图和日期筛选视图。

数据显示视图

RedirectView用于实现HTTP重定向,默认情况下只定义GET请求的处理方法。TemplateView是视图类的基础视图,可将数据传递给HTML模板,默认情况下只定义GET请求的处理方法。ListView是在TemplateView的基础上将数据以列表显示,通常将某个数据表的数据以列表表示。DetailView是在TemplateView的基础上将数据详细显示,通常获取数据表的单条数据。

数据操作视图是对模型进行操作,如增、删、改

FormView视图类使用内置的表单功能,通过表单实现数据验证、响应输出等功能,用于显示表单数据。CreateView实现模型的数据新增功能,通过内置的表单功能实现数据新增。UpdateView实现模型的数据修改功能,通过内置的表单功能实现数据修改。DeleteView实现模型的数据删除功能,通过内置的表单功能实现数据删除。

日期筛选视图是根据模型里的某个日期字段进行数据筛选的,然后将符合结果的数据以一定的形式显示在网页上。

Django模板引擎的解析过程

使用CSRF防护功能,首先在配置文件settings.py中设置CSRF防护功能。

表单设有隐藏控件csrfmiddlewaretoken,隐藏控件是由模板语法{% csrf_token %}生成的

取消表单的CSRF防护,那么可以在模板文件上删除{% csrf_token %},并且在对应的视图函数中添加装饰器@csrf_exempt

取消整个网站的CSRF防护,那么可以在settings.py的MIDDLEWARE注释的CSRF中间件CsrfViewMiddleware

对某些请求设置CSRF防护,那么可以在模板文件上添加模板语法{%csrf_token %},然后在对应的视图函数中添加装饰器@csrf_protect实现

创建static文件夹 python manage.py collectstatic

如果将Django设为调试模式(DEBUG=True),那么项目运行时将读取项目的pstatic文件夹的静态资源。

如果将Django设为调试模式(DEBUG=True),那么项目运行时将读取项目的pstatic文件夹的静态资源。

Django数据导入导出神器django-import-export使用教程

顾名思义,django-import-export是一个用于处理导入和导出数据的库。它支持多种格式,包括xls、csv、json、yaml以及tablib支持的所有其他格式。它还可以轻松与Django管理后台集成,使用起来非常方便。

安装插件

使用PIP安装

pip install django-import-export

更新settings.py:

INSTALLED_APPS = (
    ...
    'import_export',
)

还有一个可选的配置,我通常这样添加:

IMPORT_EXPORT_USE_TRANSACTIONS = True

默认值为False。它确定库是否会在数据导入中使用数据库事务,以确保安全。

编写资源Resources

django-import-export库使用Resource的概念,它的类定义非常类似于Django处理模型表单和管理类的方式。

在文档中,作者建议将与资源相关的代码放在admin.py文件。但是,如果实现与Django admin没有关系,我通常更喜欢在app文件夹里创建一个名为resources.py。

models.py

from django.db import models
class Person(models.Model):    name = models.CharField(max_length=30)    email = models.EmailField(blank=True)    birth_date = models.DateField()    location = models.CharField(max_length=100, blank=True)

resources.py

from import_export import resourcesfrom .models import Person
class PersonResource(resources.ModelResource):    class Meta:        model = Person

这是最简单的定义。您可以将几个配置传递给元类,fieldsexclude

导出数据

导出数据到CSV

from .resources import PersonResource
person_resource = PersonResource()
dataset = person_resource.export()
dataset.csv
id,name,email,birth_date,location
1,John,john@doe.com,2016-08-11,Helsinki
2,Peter,peter@example.com,2016-08-11,Helsinki
3,Maria,maria@gmail.com,2016-08-11,Barcelona
4,Vitor,vitor@freitas.com,2016-08-11,Oulu
5,Erica,erica@gmail.com,2016-08-11,Oulu

导出数据到JSON

dataset.json
[
  {"id"1"name""John""email""john@doe.com""birth_date""2016-08-11""location""Helsinki"},
  {"id"2"name""Peter""email""peter@example.com""birth_date""2016-08-11""location""Helsinki"},
  {"id"3"name""Maria""email""maria@gmail.com""birth_date""2016-08-11""location""Barcelona"},
  {"id"4"name""Vitor""email""vitor@freitas.com""birth_date""2016-08-11""location""Oulu"},
  {"id"5"name""Erica""email""erica@gmail.com""birth_date""2016-08-11""location""Oulu"}
]

导出数据到YAML

dataset.yaml
- {birth_date'2016-08-11', email: john@doe.com, id: 1, location: Helsinki, name: John}
- {birth_date'2016-08-11', email: peter@example.com, id: 2, location: Helsinki, name: Peter}
- {birth_date'2016-08-11', email: maria@gmail.com, id: 3, location: Barcelona, name: Maria}
- {birth_date'2016-08-11', email: vitor@freitas.com, id: 4, location: Oulu, name: Vitor}
- {birth_date'2016-08-11', email: erica@gmail.com, id: 5, location: Oulu, name: Erica}

过滤数据

from .resources import PersonResource
from .models import Person
person_resource = PersonResource()
queryset = Person.objects.filter(location='Helsinki')
dataset = person_resource.export(queryset)
dataset.yaml
- {birth_date'2016-08-11', email: john@doe.com, id: 1, location: Helsinki, name: John}
- {birth_date'2016-08-11', email: peter@example.com, id: 2, location: Helsinki, name: Peter}

导出到CSV视图

from django.http import HttpResponsefrom .resources import PersonResource
def export(request):    person_resource = PersonResource()    dataset = person_resource.export()    response = HttpResponse(dataset.csv, content_type='text/csv')    response['Content-Disposition'] = 'attachment; filename="persons.csv"'    return response

导出到Excel视图

from django.http import HttpResponsefrom .resources import PersonResource
def export(request):    person_resource = PersonResource()    dataset = person_resource.export()    response = HttpResponse(dataset.xls, content_type='application/vnd.ms-excel')    response['Content-Disposition'] = 'attachment; filename="persons.xls"'    return response

导入数据

查看new_persons.csv的数据

name,email,birth_date,location,id
Jessica,jessica@jones.com,2016-08-11,New York,
Mikko,mikko@suomi.com,2016-08-11,Jyväskyla,

id必须存在,因为它是主键。但是它会生成,所以我们不需要指定值。

import.html

{% extends 'base.html' %}
{% block content %}
  <form method="post" enctype="multipart/form-data">
    {% csrf_token %}
    <input type="file" name="myfile">
    <button type="submit">Upload</button>
  </form>
{% endblock %}

views.py

from tablib import Datasetdef simple_upload(request):    if request.method == 'POST':        person_resource = PersonResource()        dataset = Dataset()        new_persons = request.FILES['myfile']        imported_data = dataset.load(new_persons.read())        result = person_resource.import_data(dataset, dry_run=True)  # Test the data impor        if not result.has_errors():            person_resource.import_data(dataset, dry_run=False)  # Actually import now     return render(request, 'core/simple_upload.html')

Django后台管理集成

在admin.py里使用ImportExportModelAdmin,而不是ModelAdmin

from import_export.admin import ImportExportModelAdmin
from django.contrib import admin

from .models import Person

@admin.register(Person)
class PersonAdmin(ImportExportModelAdmin):
   pass

添加之后刷新页面你就会看到导入和导出按钮。

Django数据导入导出神器django-import-export使用教程

在导入现有项目时,导入功能具有良好的差异性:

Django数据导入导出神器django-import-export使用教程

这是一个强大的Django库,你可以用它做更多的事情。比如只想有导出功能,可以使用ExportMixin。

from .models import Personfrom django.contrib import adminfrom import_export.admin import ExportMixin
class PersonAdmin(ExportMixin, admin.ModelAdmin):    resource_class = PersonResource
admin.site.register(Person, BookAdmin)

详细文档地址:https://django-import-export.readthedocs.io/en/latest/

文章来源:Django中文网 作者:夜之舞。

正确使用Python f-string格式化字符串的7个层级

f-string是Python 3.6推出的一种简单而不同的字符串格式技术,可以优雅地表达Python字符串。除非您仍在使用旧的 Python 版本,否则在格式化字符串时,f 字符串绝对应该是您的首选。因为它可以通过一个迷你语法满足您的所有要求,甚至运行字符串的表达式。本文将深入探讨这项技术从初级到深度的7个层次。在了解它们之后,您可能会成为字符串格式化大师。

正确使用Python f-string格式化字符串的7个层级

 

1. 轻松从变量显示值

使用 f 字符串只需要做两件事:

  • 在字符串前添加一个小写的f;
  • 使用f字符串中以{variable_name}插值变量.
name = 'Yang'title = 'full stack hacker'print(f'{name} is a {title}.')# Yang is a full stack hacker.

如上所示,在 f 字符串机制的帮助下,我们可以编写简单且更少的代码,以便在字符串中显示更多代码。它完美地呼应了 Python 的禅宗。

“简单总比复杂好。

2. 数字格式化

有时仅仅显示原始值可能无法满足我们的需求,但是直接修改原始变量通常不是个好主意,因为变量可能在其他地方使用。不用担心,Python f字符串还支持”格式规范迷你语言”,它使我们能够根据自己喜欢的方式在 f 字符串中格式化值,尤其是数字。

pi = 3.1415926print(f'Pi is approximately equal to {pi:.2f}')# Pi is approximately equal to 3.14
id = 1  # need to print a 3-digit numberprint(f"The id is {id:03d}")# The id is 001
N = 1000000000  # need to add separatorprint(f'His networth is ${N:,d}')# His networth is $1,000,000,000

以上示例仅显示了冰山一角。对于格式规格语法的完整列表,相应的官方文档是您最好的朋友。

3. 正确打印特殊字符

我们可以通过 f 字符串打印这些字符或其他特殊字符吗?比如{}是的,当然。但语法有点棘手。让我们来看看。

 

3.1 打印引号

正如我们所知,反斜线是常用的转义字符,用于调用对其以下字符的替代解释。对于 f 字符串,我们需要注意一条规则:在 f 字符串表达式的括号{}中不起作用

name = 'Yang'# Correct Way:print(f''{name}' is a full stack hacker.')# 'Yang' is a full stack hacker.
# 错误方式:print(f'{'name'} is a full stack hacker.')# SyntaxError: f-string expression part cannot include a backslash

3.2 打印双括号{}

用 f字符串打印{}的方法是不同的, 非常容易出bug。这次我们不能使用反斜线。

name = 'Yang'
# 1print(f'{name} is a full stack hacker.')# 'Yang' is a full stack hacker.
# 2print(f'{{name}} is a full stack hacker.')# {name} is a full stack hacker.
# 3print(f'{{{name}}} is a full stack hacker.')# {Yang} is a full stack hacker.
# 4print(f'{{{{name}}}} is a full stack hacker.')# {{name}} is a full stack hacker.
# 5print(f'{{{{{name}}}}} is a full stack hacker.')# {{Yang}} is a full stack hacker.

如上例所示,该变量是作为f-字符串的括号还是变量处理取决于其周围的括号数。如果您不知道这种奇怪的机制,则容易出现错误。

 

3.3 打印反斜线

打印反斜线很简单:只需使用双反斜线打印。但是不要将它们添加到 f 字符串表达式括号当中。

name = 'Yang'
print(f'\{name}\ is a full \stack hacker.')# Yang is a full stack hacker.
#错误的print(f'{\name\} is a full \stack hacker.')# SyntaxError: f-string expression part cannot include a backslash

4. 小心打印字典值

将字典的值应用到 f 字符串中也容易出现错误。我们必须使用不同的引号来描述字典键和 f 字符串,如下所示。如果f字符串用双引号表示,那么变量里的字典键必须用单引号。

Hacker = {'name': 'Yang'}
print(f"{Hacker['name']} is a hacker")# Yang is a hackerprint(f'{Hacker["name"]} is a hacker')# Yang is a hackerprint(f'{Hacker['name']} is a hacker')# 语法错误 SyntaxError: invalid syntaxprint(f"{Hacker["name"]} is a hacker")# 语法错误 SyntaxError: invalid syntax

如上所示,如果我们对键名和 f 字符串都使用相同的单引号或双引号, Python 会对我们的代码感到困惑, 从而报错。

 

5. 正确处理多行 F 字符串

为了使我们的代码更易读,有必要使用多行书写一长串字符。但如果是 f 字符串,不要忘记在每行之前添加f。

ame = 'Yang'
# 错误方式print(f"{name} is a hacker."      "{name} is also a top writer."      "{name} writes on Medium."      )# Yang is a hacker.{name} is also a top writer.{name} writes on Medium.
# 正确方式print(f"{name} is a hacker."      f"{name} is also a top writer."      f"{name} writes on Medium."      )# Yang is a hacker.Yang is also a top writer.Yang writes on Medium.

6. 像大师一样显示日期和时间

如果我们需要打印日期或时间,f 字符串将再次告诉我们它是多么方便:

from datetime import datetimetoday = datetime.today()print(f"Today is {today}")# Today is 2021-07-31 18:20:48.956829print(f"Today is {today:%B %d, %Y}")# Today is July 31, 2021print(f"Today is {today:%m-%d-%Y}")# Today is 07-31-2021

如上例所示,在 f 字符串的帮助下,我们可以使用我们任何喜欢的格式打印日期或时间。

7. 评估 F 字符串内的表达式

当我第一次知道 f 字符串时, 我简直不敢相信:我们可以在 f 字符串内运行 Python 表达式。如果是真的,还算是字符串吗?

 

我仔细阅读了 PEP 498,终于明白了:

F 字符串提供了一种将表达式嵌入字符串字面的方法。需要注意的是,f 字符串实际上是在运行时间评估的表达方式,而不是恒定的值。

因此,f 字符串与普通字符串不同,此功能赋予它更大的能力。例如,我们可以在它里面运行一个显示时间的功能。

from datetime import datetime
print(f"Today is {datetime.today()}")# Today is 2021-07-31 18:20:48.956829

结论

Python 中的 f-string是一个伟大的字符串格式化技术, 显示了 Python 是多么优雅。它非常强大,因为它不是一个普通的字符串,而是在运行时可以表达的字符串。对于一些特殊情况,它有特殊的规则,我们需要谨慎使用它。

 

原文:7 Levels of Using F-Strings in Python | by Yang Zhou

翻译:大江狗

转自:https://mp.weixin.qq.com/s/DMf-a2BwdXKSKAXBYEoDcw

Django+haystack+whoosh+jieba全文检索实现

全文检索主要用在大数据量时多字段模糊检索上能较大的提高检索效率。django实现全文检索功能主要靠haystack框架,而用的最多的全文检索引擎就是whooshjieba主要用于中文分词,whoosh自带的分词是英文的。要实现以上组合的全文检索,首先要安装这些模块:

pip install django-haystackpip install whooshpip install jieba

 

配置haystack框架和whoosh引擎

安装好以上模块后,接下来要到项目的settings.py中添加haystack应用,配置whoosh搜索引擎。

#settings.pyINSTALLED_APPS = [    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',    'haystack',#全文检索框架    'book',    'user',    'recommend',    'library',    'comment',]
HAYSTACK_CONNECTIONS = {    'default': {        #使用whoosh引擎        'ENGINE': 'haystack.backends.whoosh_cn_backend.WhooshEngine',        #索引文件路径        'PATH': os.path.join(BASE_DIR, 'whoosh_index'),    }}

接下来到项目的urls.py中添加全文检索的路由。

#项目的urls.pyurlpatterns = [    path('admin/', admin.site.urls),    path('',include('book.urls')),    path('book/', include('book.urls')),    path('user/', include('user.urls')),    path('recommend/', include('recommend.urls')),    path('library/', include('library.urls')),    path('comment/', include('comment.urls')),    path('search/', include('haystack.urls')),#全文检索路由]

然后在要做全文检索的app book下创建search_indexes.py文件,该文件是固定命名,内容如下:

#导入索引from haystack import indexes#导入模型from .models import Book_info#Book_infoIndex是固定格式命名,Book_info是你models.py中的类名class Book_infoIndex(indexes.SearchIndex, indexes.Indexable):    text = indexes.CharField(document=True, use_template=True)
    def get_model(self):        return Book_info
    def index_queryset(self, using=None):        return self.get_model().objects.all()

然后到项目下的templates文件夹中依次创建search/indexes/book/目录。book是你需要使用全文检索的app名,book前面的目录名是固定写法,不能更改。

 

接着在book目录下以”模型名_text.txt“格式创建搜索引擎的索引文件,如book_info_text.txt“,book_infobook app下的models.py中的一个模型类Book_info的小写。创建好txt文件后,在文件中输入要索引的字段。

{{ object.book_name }}{{ object.book_author }}{{ object.book_press }}

上面的内容我设置了Book_info数据库中的book_namebook_authorbook_press三个字段的全文索引。

中文分词设置

接下来设置中文分词,在系统根目录中查找haystack(windows系统查找对象是我的电脑,linux系统使用find / -name haystack),找到C:UserscgAppDataLocalProgramsPythonPython37-32Libsite-packageshaystackbackends python安装包下的这个文件夹,在该文件夹下创建ChineseAnalyzer.py,内容如下:

import jiebafrom whoosh.analysis import Tokenizer, Token
class ChineseTokenizer(Tokenizer):    def __call__(self, value, positions=False, chars=False,                 keeporiginal=False, removestops=True,                 start_pos=0, start_char=0, mode='', **kwargs):        t = Token(positions, chars, removestops=removestops, mode=mode,                  **kwargs)        seglist = jieba.cut(value, cut_all=True)        for w in seglist:            t.original = t.text = w            t.boost = 1.0            if positions:                t.pos = start_pos + value.find(w)            if chars:                t.startchar = start_char + value.find(w)                t.endchar = start_char + value.find(w) + len(w)            yield t
def ChineseAnalyzer():    return ChineseTokenizer()

复制whoosh_backend.py,将名称改为whoosh_cn_backend.py,打开该文件,引入中文分析类:

from .ChineseAnalyzer import ChineseAnalyzer

查找文件中analyzer=StemmingAnalyzer(),将其改为analyzer=ChineseAnalyzer()

完成以上的配置就可以建立索引文件了,在项目终端下输入命令重建索引:

python manage.py rebuild_index

创建好索引文件后通过python manage.py update_index来更新索引文件。

全文索引的使用

更改原来的检索模板文件:

<form action="/search/" method="GET">       <div class="input-group mb-3">              <input type="text" name="q" class="form-control" autocomplete="off" required placeholder="可检索字段-书名/作者/出版社">              <div class="input-group-append">                    <button class="btn btn-info" type="submit">搜索</button>                </div>       </div></form>

上面的action参数对应上文在项目urls.py中设置的路由,代表表单提交到全文检索路由,input输入中的name=q参数是haystack的固定写法,q代表查询的关键词。

 

用户提交检索后,系统将检索词提交给haystack,经过haystack查询后,默认结果返回到项目根目录下templates/search/search.html文件,结果中主要包含以下关键参数:

  • query:查询的关键词。
  • page:当前页的page对象,通过该对象获取查询的数据。
  • paginator:分页对象。

模板中主要代码如下:

<div class="clearfix">    <div class="alert alert-info">        检索到关于:&nbsp;<b>“{{ query }}”</b>&nbsp;的图书,当前第&nbsp;<b>{{ page.number }} </b>&nbsp;页    </div>    {# 遍历检索图书结果 #}    {% for item in page %}    <a href="{% url 'book_detail' %}?ids={{ item.object.book_id }}" style="color:black">        <div class="responsive">            <div class="img">                              <img src="{{ item.object.book_pic }}" alt="" width="300" height="200">                         <div class="desc">{{ item.object.book_name }}</div>                <div class="desc"><span>{{ item.object.book_press }}</span></div>            </div>        </div>    </a>    {% endfor %}</div>
{# 分页 #}  <div class="center">    <ul class="pagination">      {% if page.has_previous %}      <li class="page-item"><a class="page-link" href="?q={{query}}&amp;page={{ page.previous_page_number }}">上一页</a></li>      {% endif %}      {% if page.has_next %}      <li class="page-item"><a class="page-link" href="?q={{query}}&amp;page={{ page.next_page_number }}">下一页</a></li>      {% endif %}    </ul>  </div>

需要注意的是:通过page对象遍历获取的对象属性,需要在中间增加object,否则获取不到对象的属性。检索结果如下:

Django+haystack+whoosh+jieba全文检索实现

作者:libdream
链接:
https://www.jianshu.com/p/31646c304cb4
来源:
简书

什么?3 行 Python 代码就能获取海量数据?

  一谈起数据分析,首先想到的就是数据,没有数据,谈何分析。

毕竟好的菜肴,没有好的原材料,是很难做的~


所以本期就给大家分享一个获取数据的方法,只需三行代码就能搞定。


「GoPUP」,大佬造的轮子,大概有100+的免费数据接口。


什么?3 行 Python 代码就能获取海量数据?


GitHub:https://github.com/justinzm/gopup

使用文档:http://doc.gopup.cn/#/README


主要有指数数据、宏观经济数据、新经济数据、微博KOL数据、信息数据、生活数据、疫情数据等。


# 安装gopup
pip install gopup  --upgrade

安装成功后,就能使用了。

01 微博指数


获取指定关键词的微博指数。

# 微博指数
import gopup as gp
df_index = gp.weibo_index(word="马保国", time_type="1month")
print(df_index)

time_type=”1month”; 1hour, 1day, 1month, 3month 选其一。


什么?3 行 Python 代码就能获取海量数据?

三行Python代码实现数据获取。


02 百度指数


获取指定关键词的百度搜索指数。


# 百度指数
import gopup as gp
cookie = "此处输入您在网页端登录百度指数后的 cookie 数据"
index_df = gp.baidu_search_index(word="马保国", start_date='2020-11-15', end_date='2020-11-25', cookie=cookie)
print(index_df)


需要登陆百度指数,获取你的Cookie。


什么?3 行 Python 代码就能获取海量数据?

设置关键词,时间起始,就能获取到马保国老师的热度数据了。


什么?3 行 Python 代码就能获取海量数据?

后面还有百度资讯、媒体、需求图谱、人群年龄、性别、兴趣分布数据接口,就不一一介绍了。


感兴趣的同学可以自行去查看文档。


03 头条指数

什么?3 行 Python 代码就能获取海量数据?

获取指定关键词的头条指数。


# 头条指数
import gopup as gp
index_df = gp.toutiao_index(keyword="马保国", start_date='20201115', end_date='20201125')
print(index_df)

接口挂了,不知为何~


还有相关性、情感、地域、城市、年龄、性别、用户阅读兴趣分析数据等接口。


04 谷歌数据

需要通过代理才能使用,不过上面这三类已经完全够用了。


# 谷歌数据 import gopup as gp index_df = gp.google_index(keyword="马保国", start_date='2020-11-15T10', end_date='2020-11-25T23') print(index_df)


05 宏观经济数据

有一个杠杆率的数据可以使用。


# 杠杆数据
import gopup as gp
df_index = gp.marco_cmlrd()
print(df_index)

不懂经济学,所以不明觉厉。


什么?3 行 Python 代码就能获取海量数据?


06 新经济数据

这个数据倒是蛮有趣的,主要是公司数据。


比如独角兽和倒闭公司的数据。


# 独角兽公司数据
import gopup as gp
df_index = gp.nicorn_company()
print(df_index)

一共是240家独角兽公司。


什么?3 行 Python 代码就能获取海量数据?

蚂蚁、字节、阿里云、滴滴,都是行业中的大佬。


# 倒闭公司数据
import gopup as gp
df_index = gp.death_company()
print(df_index)

倒闭的公司一共有6921家。


什么?3 行 Python 代码就能获取海量数据?

看到不少P2P的公司。


剩下还有有一个特许经营许可数据,好像是吊牌销售的意思。


前段时间看到一篇文章,讲的就是南极人吊牌销售的事情,南极人都不自己搞生产,而是代工。


07 KOL数据&信息数据

主要是微博的KOL,所以没啥用。


# KOL数据
import gopup as gp
g = gp.pro_api(token = "……")
df_index = g.weibo_user(keyword="雷军")
print(df_index)

信息数据是新闻联播文字稿。


08 中国油价数据

包含汽油和柴油的调价信息数据


# 油价数据
import gopup as gp
df_index = gp.energy_oil_hist()
print(df_index)

时间从2000年直到2020年,细数20年油价变化。


什么?3 行 Python 代码就能获取海量数据?


09 百度迁徙数据


可以用来做飞线图或者OD图。


# 迁徙数据
import gopup as gp
migration_area_baidu_df = gp.migration_area_baidu(area="湖北省", indicator="move_in", date="20200201")
print(migration_area_baidu_df)

单次返回100个城市的数据。

什么?3 行 Python 代码就能获取海量数据?


10 影视数据


实时电影票房数据,最近又有病例出现,数据应该也比较惨淡。


这里需要一个WebDES.js文件,才能请求成功。


# 实时电影票房数据
import gopup as gp
df_index = gp.realtime_boxoffice()
print(df_index)

「如果声音不记得」当日1千万的票房,太少了。


什么?3 行 Python 代码就能获取海量数据?

单日影院数据,今年影院能倒闭一大堆。


# 单日影院数据
import gopup as gp
df_index = gp.day_cinema(date="2020-12-08")
print(df_index)

得到票房前100的数据。


什么?3 行 Python 代码就能获取海量数据?

最高应该是8万多的收入。


实时电视剧播映指数,天气冷了选个好剧或者综艺,窝在被窝刷起来。


# 电视剧数据
import gopup as gp
df_index = gp.realtime_tv()
print(df_index)

大秦赋,感觉还不错。


什么?3 行 Python 代码就能获取海量数据?


还有实时综艺播映指数、艺人商业价值、流量价值等数据。


11 全国高等学校数据

普通高等学校名单,包含名称、主管部门,所在省市、所在地、办学层次等信息。


# 普通高等学校数据
import gopup as gp
df_index = gp.university()
print(df_index)

一共是2631所高校。


什么?3 行 Python 代码就能获取海量数据?

还有成人高等学校以及高等学校详情数据。


12 疫情数据

有网易、丁香园、百度三家的疫情数据。


# 世界历史累计确诊数据
import gopup as gp
covid_163_df = gp.covid_163(indicator="世界历史累计数据")
print(covid_163_df)


目前累计207个国家有疫情出现。

什么?3 行 Python 代码就能获取海量数据?

全世界总共就233个国家和地区,快接近90%了。


由于数据接口太多了,就不一一介绍了。


– EOF –

推荐阅读  点击标题可跳转

1、快收藏!!整理了 100 个 Python 小技巧!!

2、超全汇总!200 多个 Python 标准库介绍

3、整理了 34 个 Python 自动化办公库

觉得本文对你有帮助?请分享给更多人

推荐关注「Python开发者」,提升Python技能

点赞和在看就是最大的支持❤️