Sunrise

`长路漫漫,唯剑作伴`


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

Tensorflow学习

发表于 2019-12-25 | 分类于 深度学习

安装测试过程

建立虚拟环境:python -m venv 目录

启用虚拟环境:

linux下:source 目录/bin/activate;

windows下:cd Scripts–>activate.bat

安装tensorflow:pip install tensorflow

警告:Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2

忽略警告:

1
2
3
import os

os.environ['TF_CPP_MIN_LOG_LEVEL']='2'

测试是否安装成功:

1
2
3
4
5
6
7
8
9
10
11
12
13
import tensorflow as tf
import os

os.environ['TF_CPP_MIN_LOG_LEVEL']='2'

a = tf.constant(1.)
b = tf.constant(2.)
print(a+b)

print('GPU:', tf.test.is_gpu_available())

tf.Tensor(3.0, shape=(), dtype=float32)
GPU: False
阅读全文 »

python 代码规范

发表于 2019-11-18 | 分类于 python编程

python代码规范–如何写出优雅、简洁并易于理解的代码

首部信息

首先在创建文件时,应该在文件首部声明一些必要信息,如开发者姓名、开发者联系方式以及该脚本的功能描述等,这样便于后续脚本的维护和审查。

若使用pycharm开发工具,可以在File-->settings-->Editor-->FIle and Code Templates中设置,这样每次新建文件时会自动生成某些基础信息。

基础信息模板:

1
2
3
4
5
6
7
# _*_ coding:utf-8 _*_
"""
@time :${DATE} ${TIME}
@author :liutengfei
@mail:liutengfei@bertadata.com
@desc:
"""

面向对象Class

  • 类名使用驼峰式命名方法,类名应与脚本文件名一致
  • 对于无须继承任何类(或者说继承于基类object)的类,使用classs ClassName:而非class ClassName(object):定义

  • 对于类变量或全局变量,使用全大写英文单词命名,多个单词间使用_连接,最多不超过3个

    ps: 类变量指的是定义在类中,但在各个类方法外的变量。类变量的特点是:所有类的实例化对象都可以共享类变量的值,即类变量可以在所有实例化对象中作为公用资源。 类变量推荐直接用类名访问,但也可以使用对象名访问。

  • 使用全小写英文单词命名实例变量或普通变量,如果需要多个单词的,单词之间使用_连接,单个变量使用单词的个数不超过3个

  • 私有变量/保护变量:_xxx单下划线开头叫保护变量,意思是只有类对象和子类对象自己能访问到这些变量,此变量不能通过from XXX import xxx 导入;__xxx 双下划线开头叫私有变量,只允许类本身访问,连子类对象也不能访问到这个数据

    ps:私有方法和保护方法的定义该规则同样适用

  • 使用self作为实例方法的第一个参数;使用cls作为类方法的第一个参数;当定义的方法在实现时并不需要引用类或者实例时,定义为静态方法,使用 装饰器@staticmethod 来定义

    ps:类方法较少使用,其具体使用场景有待总结

阅读全文 »

python 提取表格内容的通用方式

发表于 2019-10-21 | 分类于 python编程

提出问题

当我们写爬虫进行数据结构化时,经常遇到一些表格数据,无论是web表格还是Excel、Word or PDF中的表格,都很常见;如果表格非常规范化,我们在做结构化时可以说非常省事,一般认为某列对应我们的某字段值即可;但是,大多数时候,表格往往写的比较随意,某一字段值对应的数据并不是在固定的列。

举个例子,表格A对应的表头如下(这里用列表表示):

[“企业名称”, “处罚决定书文号”, “违法行为”, “处罚内容”, “处罚决定机关名称”, “处罚决定日期”]

相应的我们有一个python对象,其字段值为:

1
2
3
4
5
6
7
8
9
class PunishmentItem(object):
__slots__ = (
"name", # 行政相对人名称
"irregularities", # 违规行为
"punishment_text", # 处罚内容
"department", # 处罚决定机关名称
'public_date', # 时间
'number', # 文号
)

于是我们在提取的时候,理想的方式是name对应表格第一列,number对应第二列,依此类推……

但是实际上可能还有表格B,其对应的表头为:

[“处罚决定书文号”, “企业名称”, “违法行为”, “处罚内容”, “处罚决定机关名称”, “处罚决定日期”]

我们发现其文书号和企业名称顺序是反的,那我们可能会想在程序中加个判断如果是B表格我们就调整索引值…

可是,事实上可能还存在表格C、D、E……,其表头顺序各不相同,我们要在程序中写无数个if else吗,显然是不可以的。

阅读全文 »

某次清洗项目笔记

发表于 2019-10-16 | 分类于 数据库

mysql常用命令与查询语句

连接mysql:

mysql -u username -p -h 主机 -D db_name

断开连接:quit or Ctrl + C

所有命令末尾加上;或者\g

查看所有数据库:

show databases;

切换数据库:

use <数据库名>;

查看所有数据表:

show tables;

通配符:

%百分号通配符: 表示任何字符出现任意次数 (可以是0次).
_下划线通配符:表示只能匹配单个字符,不能多也不能少,就是一个字符.

获取表中行数:

select count(md5_id) from t_kaitinggonggaos;

查看表中字段数据类型:

show COLUMNS from table

获取庭审公开网的数据:

select * from t_kaitinggonggaos_0 where url like 'http://tingshen%';

获取前两行并以友好格式展示:

select * from t_kaitinggonggaos_0 where url like 'http://tingshen%' limit 0,2\G

查看索引:

show index from table

阅读全文 »

python 处理doc、docx以及xls

发表于 2019-09-30 | 分类于 python编程

手上有一些.xls、.doc、 .docx以及.wps后缀的格式文件需要解析,知道python-docx和xlrd可以分别读取.doc和.xls,但是.docpython却无法读取,通过上网查找到了textract。下面我对其可行性进行了测试:

textract

这是一个号称可以解析任何形式文件的库,实际上就是利用了特定的库来解析,下面是其可以解析的文件类型,以及其凭借的包:

  • .csv via python builtins
  • .doc via antiword
  • .docx via python-docx2txt
  • .eml via python builtins
  • .epub via ebooklib
  • .gif via tesseract-ocr
  • .jpg and .jpeg via tesseract-ocr
  • .json via python builtins
  • .html and .htm via beautifulsoup4
  • .mp3 via sox, SpeechRecognition, and pocketsphinx
  • .msg via msg-extractor
  • .odt via python builtins
  • .ogg via sox, SpeechRecognition, and pocketsphinx
  • .pdf via pdftotext (default) or pdfminer.six
  • .png via tesseract-ocr
  • .pptx via python-pptx
  • .ps via ps2text
  • .rtf via unrtf
  • .tiff and .tif via tesseract-ocr
  • .txt via python builtins
  • .wav via SpeechRecognition and pocketsphinx
  • .xlsx via xlrd
  • .xls via xlrd

使用方式:

pip install textract

阅读全文 »

反爬(四)

发表于 2019-09-20 | 分类于 爬虫

网站四处罚信息反爬破解

在Chrome中请求列表页时,刷新网页观察网络请求发现,先是跳转到一个中转链接:http://www.pbc.gov.cn/WZWSREL3poZW5nd3Vnb25na2FpLzEyNzkyNC8xMjgwNDEvMjE2MTQyMS9pbmRleC5odG1s?wzwschallenge=V1pXU19DT05GSVJNX1BSRUZJWF9MQUJFTDUxODU2NjI=,然后再跳转回到列表页。

下面我们来具体看看中间的过程:

  1. 请求列表页http://www.pbc.gov.cn/zhengwugongkai/127924/128041/2161421/index.html

    请求头中没有携带Cookie,请求响应返回的Cookie为:wzws_cid=6fe01577596a409d77f565c225c8c5a664a89799db7d0985a62413f32f6ba6e2d15be123681d18238c4216ea84a3b705e2a6611466562bf4c66a22358bff5b241873a84dab388b5da80fc2ecf6a2acf41f764692145f8bb5a57762e2fe08c49c; path=/; expires=Thu, 19 Sep 2019 08:41:13 GMT

    此时请求返回的是一个携带大量加密js的HTML文件;

  2. 自动去请求http://www.pbc.gov.cn/WZWSREL3poZW5nd3Vnb25na2FpLzEyNzkyNC8xMjgwNDEvMjE2MTQyMS9pbmRleC5odG1s?wzwschallenge=V1pXU19DT05GSVJNX1BSRUZJWF9MQUJFTDUxODU2NjI=

    请求头中携带的Cookie为:

    wzws_cid=6fe01577596a409d77f565c225c8c5a664a89799db7d0985a62413f32f6ba6e2d15be123681d18238c4216ea84a3b705e2a6611466562bf4c66a22358bff5b241873a84dab388b5da80fc2ecf6a2acf41f764692145f8bb5a57762e2fe08c49c

    请求响应返回的Cookie为:

    wzws_cid=6fe01577596a409d77f565c225c8c5a664a89799db7d0985a62413f32f6ba6e2d15be123681d18238c4216ea84a3b705b81cba9208ba6c30f9c7a9ed07941d8e; path=/; expires=Thu, 19 Sep 2019 08:41:13 GMT

    此时请求返回的是一个302的重定向页面;

  3. 自动再次请求列表页http://www.pbc.gov.cn/zhengwugongkai/127924/128041/2161421/index.html

    请求头中携带的Cookie为:

    wzws_cid=6fe01577596a409d77f565c225c8c5a664a89799db7d0985a62413f32f6ba6e2d15be123681d18238c4216ea84a3b705b81cba9208ba6c30f9c7a9ed07941d8e

    请求响应中没有返回Cookie;

    但是返回了我们想要获取的列表页内容;

通过观察总结,我们发现步骤2是为了返回给我们请求需要的真正的Cookie,只有携带步骤2返回的Cookie才可以成功请求到数据,所以我们每次只要进行一次步骤2的操作去获取cookie就可以了;但是,步骤2的请求链接是如何获取的呢?

阅读全文 »

反爬(三)

发表于 2019-09-09 | 分类于 爬虫

网站三的反爬破解

1、请求url,查看数据情况

首先我们请求想要爬取的页面url,根据页面元素提取重要信息,发现请求返回的数据如下:

莘器规奉网医卫生录红霉素眼膏到院次设六柒莘器规奉网医卫生录红霉素眼膏到院到院机局聊城利筑药国集团元重六有dCc2TW6qweCe/4qu5++U7OyM68vQ6MvbrM6VgvOf/umNtruC8dGU9dCP4O2O+uyjyMgHX3fe5rSBz8qy0POnlfuL/f+wrNHU6+7Hx9vU0+aK4d6C/cDVsOeg39+52cqq48vSztOj9M+o5vq3q9uGjryi+oa64cCz+Z/Q1fd+SnNXBAFDVw==

仔细观察发现返回的内容和我们在浏览器中看到的不同,我们在浏览器中看到的内容为:

阅读全文 »

反爬(二)

发表于 2019-09-06 | 分类于 爬虫

网站二处罚信息爬取破解

1、请求url,查看数据情况

首先根据网络请求的顺序,请求列表页看下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
url = 'http://credit.shaanxi.gov.cn/queryPermitPublishPage.jspx'
post_data = {"lb": "xzcf", "pageNo": "1", "pageSize": "10"}
_Request_Header = {
"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0',
}
try:
req = requests.post(url, data=post_data, headers=_Request_Header)
except Exception as e:
print(e)
else:
if req.status_code == 200:
print(req.text)

<<< {"total":-1,"pageCount":1,"pageNo":1,"columns":{"zh":["决定文号","处罚类别","相对人名称","处罚机关","处罚决定日期"],"en":["xy020102","xy020103","xy010101","xy020101","xy020107"]},"pageSize":10,"list":"a75yXqmRStbuWNG6esIpxGRyYd2ZshrzvW9wFLKTwPNBP74nGyY13VrrI8c6mGe2c04/xNVS+GmL\nLB4QkA61163PC8E31UQcmpVzMtd8eyoSDffABXjNPnTwiBTDYjEB6/HrNytCSiIezl/qIUkCEFyP\nwC1+t9Qu5ozKZ3jkkQ3G*********************************************************************************\nbNnRldjsqiI="}
以上***省略了若干内容

请求列表页后,返回的的关键信息被加密了,乍一看上去像base64编码,使用base64解码后发现没有用,于是猜想肯定该网站使用了js加密,需要找出来该加密函数(或者说解密函数)。

2、寻找js加密函数

找加密函数一般有两种方式

阅读全文 »

urllib库的使用

发表于 2019-08-29 | 分类于 python编程
  • urlparse

    1
    2
    3
    4
    5
    6
    7
    8
    9
    from urllib.parse import urlparse, urlunparse

    result = urlparse('http://www.baidu.com/index.html;user?id=5#comment')
    print(result)

    ParseResult(scheme='http', netloc='www.baidu.com', path='/index.html', params='user', query='id=5', fragment='comment')
    # 其中schema是协议,netloc是域名服务器,path是相对路径,params是参数,query是查询条件,fragment锚点

    # 相对应的将参数合并成完整url的方法为urlunparse(),共6个参数
阅读全文 »

反爬(一)

发表于 2019-08-24 | 分类于 爬虫

网站一反爬破解

这个网站的反爬比较初级,页面上有一个滑动验证码,但是不存在js加密反爬之类的东西,所以只需要识别出来验证码图片的缺口位置,以Post参数的形式返回给服务端就可以请求到数据了。

本次流程有两种方式来实现,一种方式是使用requests.get()/post()的形式,另一种方式是使用session;前一种方式需要先请求获取cookie,然后每次携带cookie进行请求,后一种方式相对步骤简单些。

这里选择使用session的方式。

如果用前一种方式尝试,直接请求该网站主页返回的信息中没有cookie,直接请求获取验证码的url时既可以获取图片信息,也可以获取cookie。

  • 第一步:请求验证码图片

    请求到验证码图片后,可以根据缺口位置的RGB颜色值范围,来找出缺口的位置,也可以先灰度化处理,再来判断缺口的位置,这里先灰度化。

阅读全文 »
1…101112
chenxi

chenxi

120 日志
12 分类
224 标签
Links
  • Docle
  • Swift
© 2025 chenxi
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4