Sunrise

`长路漫漫,唯剑作伴`


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

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颜色值范围,来找出缺口的位置,也可以先灰度化处理,再来判断缺口的位置,这里先灰度化。

阅读全文 »

百度人脸识别

发表于 2019-08-22 | 分类于 python编程

百度人脸识别–人脸对比

主要是调用百度的接口,调用方法如下:

  • HTTP方法:POST
  • 请求URL :https://aip.baidubce.com/rest/2.0/face/v3/match
  • URL参数:access_token,通过API Key和Secret Key获取的access_token,参考“Access Token获取”

  • Header:Content-Type:application/json

  • 请求参数:
    • image:必选,string,图片信息,根据Image_type来判断;
    • image_type:必选,string,图片类型[BASE64, URL, FACE_TOKEN],BASE64是对图片的二进制流的一个BASE64编码,URL是从互联网上进行下载的链接,FACE_TOKEN是人脸检测返回的标识。
    • face_type:非必选,详情看文档
    • quality_control:非必选,详情看文档
    • liveness_control:非必选,详情看文档
阅读全文 »

python 进程池/线程池

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

concurrent.futures模块,它提供了ThreadPoolExecutor和ProcessPoolExecutor两个类,实现了对threading和multiprocessing的进一步抽象,对编写线程池/进程池提供了直接的支持。

问题:有10万条url需要爬取,如何以比较简单的方式实现多进程/多线程爬取?

阅读全文 »

python 调度

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

python的任务调度模块,apscheduler,它主要包含了四种组件triggers(触发器)、job stores(任务存储器)、executors(执行器)、schedulers(定时调度器)。

  • 安装

    pip install apscheduler

  • 定时器种类

    BlockingScheduler:当调度器是进程中唯一运行的程序时使用

    BackgroundScheduler:在不使用下面任何框架时使用,并希望调度器在应用程序的后台运行。

    AsyncIOScheduler:你使用的应用程序中必须有asyncio模块

    GeventScheduler:在你的应用程序中必须有gevent模块

    TornadoScheduler:你的应用程序是Tornado框架可以使用

    TwistedScheduler:你的应用程序是Twisted框架可以使用

    QtScheduler: 在QT框架中使用

  • 触发器种类

    date:一次性任务,即只执行一次任务

    interval:循环任务,即按照时间间隔执行任务

    cron:定时任务,即在每个时间段执行任务

阅读全文 »

python 字典和对象

发表于 2019-08-20 | 分类于 python编程

python字典

字典初始化的N种方法

  • 直接赋值

    1
    a = {"one": 1, "two": 2, "three": 3}
  • 先新建字典对象,再动态赋值

    1
    2
    3
    4
    b = dict()
    b["one"] = 1
    b["two"] = 2
    b["three"] = 3
  • 新建字典对象时,通过参数赋值

    1
    c = dict(one=1, two=2, three=3)
  • 新建字典对象时,通过嵌套的元组和列表来赋值

    1
    d = dict([("one", 1), ("two", 2), ("three", 3)])
阅读全文 »
1…101112
chenxi

chenxi

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