python爬虫初级入门

最近一个项目,需要用到地区按拼音索引。在网上没有找到合适的数据。决定用python写个爬虫脚本,爬取美团的城市列表,然后在请求高德行政区域查询接口补充数据。

import urllib.request
from bs4 import BeautifulSoup
import json
import requests

#根据城市名称通过高德行政区查询接口获取城市编码和经纬度
def getLocation(name):
    params = {'key': '809e7cf228d47949c89155055f5ceba9', 'keywords': name}
    url = 'https://restapi.amap.com/v3/config/district'
    res = requests.get(url, params)
    res_dict = json.loads(res.content)
    if len(res_dict['districts']) > 0 and int(res_dict['count']) > 0:
        city_code = res_dict['districts'][0]['citycode']
        center = res_dict['districts'][0]['center']
        local = center.partition(",")
        if len(local) > 0:
            return city_code, local[0], local[2]

response = urllib.request.urlopen("https://www.meituan.com/changecity/") #美团的城市列表页
html = response.read().decode("utf-8") #将页面编码转为utf-8
bf = BeautifulSoup(html, 'html.parser') #解析页面内容
labels = bf.find_all('span', class_ = 'city-label')#查询首字母标识
city_list = []
for label in labels:
    letter = label.get_text()
    datas = bf.select('#city-'+letter) #查询城市信息
    for item in datas:
        citys = []
        for city in item.find_all(class_ = 'city'): #轮询城市名称
            if len(city) > 0:
                info = getLocation(city) #调用高德查询接口函数
                try:
                    citys.append({'name': city.get_text(), 'code': info[0], 'Longitude': info[1], 'Latitude': info[2]}) #将城市信息添加到城市列表中
                except Exception:
                    print(info)
        city_list.append({'letter':letter, 'data': citys})
print(json.dumps(city_list))

js时间工具类

1、获取当前时间

// 当前时间的标准形式字符串
var nowDate = DateUtil.now();
// 输出 2020-03-11 10:06:52

2、将指定的日期转换为”yyyy-MM-dd HH:mm:ss”的格式,代码如下:

// 转换 yyyy-MM-dd HH:mm:ss 格式
DateUtil.formatDateTime(new Date(),date_formate.normDatetimePattern)
// 输出 2020-03-11 10:21:35

3、将时间戳转换为时间

// 时间戳 转 日期
var date = DateUtil.date(1402233166999);
// Sun Jun 08 2014 21:12:46 GMT+0800 (中国标准时间)
继续阅读js时间工具类

Yii2 支持微信昵称中的emoji表情

现在很多微信昵称中带有emoji表情,但是在做项目的时候遇到无法保存到数据库的问题。

解决这个问题需要从两方面入手:

1、Mysql 其实mysql里的utf8编码并不是真正的Utf8。因为Mysql的Utf8每个字符只支持三个字节,而真正的Utf8是每个字符四个字节。Mysql一直没有修复这个问题,而是新增了一种字符编码utf8mb4。所以mysql里面最好不要使用utf8编码,而是直接使用utf8mb4编码。

2、MySQL表和字段编码都修改后,在Yii2数据库链接配置文件里还要修改下编码模式为utf8mb4如下

return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=',
    'username' => '',
    'password' => '',
    'charset' => 'utf8mb4',
];

信小程序进行地图导航使用地图功能

1、获取目的地经纬度

通过 http://www.gpsspg.com/maps.htm 获取目的地经纬度

2、微信端代码

wx.getLocation({//获取当前经纬度
      type: 'wgs84', //返回可以用于wx.openLocation的经纬度,官方提示bug: iOS 6.3.30 type 参数不生效,只会返回 wgs84 类型的坐标信息  
      success: function (res) {
        wx.openLocation({//​使用微信内置地图查看位置。
          latitude: 22.5542080000,//要去的纬度-地址
          longitude: 113.8878770000,//要去的经度-地址
          name: "宝安中心A地铁口",
          address:'宝安中心A地铁口'
        })
      }
    })

导航效果

composer 常用命令

composer list 显示所有命令

composer show 显示所有包信息

composer install 在 composer.json 配置中添加依赖库之后运行此命令安装

composer create-project laravel/laravel Laravel –prefer-dist “5.1.*” 创建项目

composer search packagename 搜索包

composer update 更新所有包

composer update monolog/monolog 更新指定包

composer remove monolog/monolog 移除指定的包

composer require monolog/monolog 添加指定包

composer require monolog/monolog:1.19 添加指定包和版本

composer require monolog/monolog=1.19

composer require monolog/monolog 1.19

Apache优化:修改最大并发连接数

Apache是一个跨平台的web服务器,由于其简单高效、稳定安全的特性,被广泛应用于计算机技术的各个领域。现在,Apache凭借其庞大的用户数,已成为用户数排名第一的web服务器。

尽管如此,在实际的生产环境中,我们仍然不可能直接使用默认配置的Apache来充当服务器。毕竟,为了更充分合理地利用Apache服务器,我们都应该根据自己的实际需要对Apache的默认配置作出一些必要的调整。而针对Apache的优化配置过程中,修改Apache的最大并发连接数就显得尤为重要。

在修改Apache的最大并发连接数之前,我们需要预先了解一些Apache的相关知识。

众所周知,Apache是一个跨平台的、采用模块化设计的服务器。为了应对不同的平台和不同的环境产生的各种不同的需求,也为了在具体的平台或环境下达到最佳的效果,Apache在web服务器的基础功能方面(端口绑定、接收请求等)也同样采用了模块化设计,这个Apache的核心模块就叫做多路处理模块(Multi-Processing Module,简称MPM)。

Apache针对不同的操作系统提供了多个不同的MPM模块,例如:mpm_beosmpm_eventmpm_netwarempmt_os2mpm_preforkmpm_winntmpm_worker。如果条件允许,我们可以根据实际需求将指定的MPM模块编译进我们自己的Apache中(Apache的源码是开放的,允许用户自行编译)。不过,如果在编译时我们没有选择,Apache将按照如下表格根据不同的操作系统自行选择对应的MPM模块,这也是Apache针对不同平台推荐使用的MPM模块。 继续阅读Apache优化:修改最大并发连接数

JS时间戳格式化为日期时间

formatDate: function (value) {
     
           var date = new Date(value * 1000); //如果是10位时间戳需要乘1000 如13时间戳则不需要
           Y = date.getFullYear(),
           m = date.getMonth() + 1,
           d = date.getDate(),
           H = date.getHours(),
           i = date.getMinutes(),
           s = date.getSeconds();
           if (m < 10) {
                m = '0' + m;
           }
           if (d < 10) {
               d = '0' + d;
           }
           if (H < 10) {
               H = '0' + H;
           }
           if (i < 10) {
              i = '0' + i;
           }
           if (s < 10) {
              s = '0' + s;
           }
           var t = Y + '-' + m + '-' + d + ' ' + H + ':' + i;
           return t;
},

有一点需要特别注意的是 如果需要格式化的时间戳是10位的需要乘1000变成13位;

PhpStorm 快捷键大全

PhPStorm 是 JetBrains 公司开发的一款商业的 PHP 集成开发工具,PhpStorm可随时帮助用户对其编码进行调整,运行单元测试或者提供可视化debug功能。Phpstrom的一款名为Magicento的插件对快速创建Magento插件十分有用。

常用快捷键

设置快捷键:File -> Settings -> IDE Settings -> Keymap -> 选择“eclipse” -> 然后“Copy”一份 -> 再个性化设置(自己习惯的)快捷键

常用快捷键(keymaps:Default情况下)

Esc键编辑器(从工具窗口)
F1 帮助 千万别按,很卡!
F2(Shift+F2) 下/上高亮错误或警告快速定位
F3 向下查找关键字出现位置
F4 查找变量来源
F5 复制文件/文件夹
F6 移动
F11 切换书签
F12 返回到以前的工具窗口

注意:部分快捷键,必须在没有更改快捷键的情况下才可以使用

查询快捷键
CTRL+N 查找类
CTRL+SHIFT+N 查找文件,打开工程中的文件(类似于eclipse中的ctrl+shift+R),目的是打开当前工程下任意目录的文件
CTRL+SHIFT+ALT+N 查 找类中的方法或变量(JS)
CIRL+B 找变量的来源,跳到变量申明处
CTRL+ALT+B 找所有的子类
CTRL+SHIFT+B 找变量的 类
CTRL+G 定位行,跳转行
CTRL+F 在当前窗口查找文本
CTRL+SHIFT+F 在指定路径查找文本
CTRL+R 当前窗口替换文本
CTRL+SHIFT+R 在指定路径替换文本
ALT+SHIFT+C 查找修改的文件,最近变更历史
CTRL+E 最近打开的文件
F3 查找下一个
SHIFT+F3 查找上一个
F4 查找变量来源
CTRL+ALT+F7 选 中的字符 查找工程出现的地方
ALT+F7 直接查询选中的字符
Ctrl+F7 文件中查询选中字符 继续阅读PhpStorm 快捷键大全