Python
文章平均质量分 68
孔天逸
認めること前に進めっている。
展开
-
Linux下pyCharm无法输入中文的解决办法
Linux下pyCharm无法输入中文的解决办法问题描述在Ubuntu下写Python代码的注释的时候,发现pyCharm无法输入中文。解决办法进入pyCharm的安装目录,进入bin目录,找到pycharm.sh文件,加入以下配置项:export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx之原创 2016-10-13 21:46:27 · 9352 阅读 · 2 评论 -
Python保存json文件并格式化
背景最近自己搞些小东西,需要用json文件存储些文件属性什么的,但是发现用json包里的json.dump()方法存json文件的效果好丑……(其实是没仔细看方法), 于是上网找了一份格式化json文件的代码,效果挺不错,用了递归的思想,学习了一波并找到了其中一点小bug。然后,发现其实json.dump()方法其实只需要设置一个参数就达到格式化的效果了……下面介绍一下json.dump()和我修改原创 2017-02-26 17:48:24 · 40605 阅读 · 3 评论 -
Scrapy定时关闭
之前转载过一篇介绍定时执行Scrapy方法的博文:scrapy定时执行抓取任务,并且一直在使用这个方法做增量爬虫。但是问题来了,假设如下情景:某一天,我要爬的网站更新了非常非常多的内容,以至于一天过去了,我的爬虫还没有停止工作。但是我的Ubuntu系统并不知道,于是它又定时的去crontab中执行了定时任务。于是就出现了如下尴尬的情景:我的系统里同时运行着两只有同样功能的爬虫。这太尴尬了,即浪费系统原创 2017-03-19 22:53:25 · 5413 阅读 · 3 评论 -
Python爬虫爬取动态页面思路+实例(一)
简介有时候,我们天真无邪的使用urllib库或Scrapy下载HTML网页时会发现,我们要提取的网页元素并不在我们下载到的HTML之中,尽管它们在浏览器里看起来唾手可得。这说明我们想要的元素是在我们的某些操作下通过js事件动态生成的。举个例子,我们在刷QQ空间或者微博评论的时候,一直往下刷,网页越来越长,内容越来越多,就是这个让人又爱又恨的动态加载。爬取动态页面目前来说有两种方法分析页面请求(这篇原创 2016-12-21 17:48:06 · 130745 阅读 · 48 评论 -
Python的str强转int时的小问题
数字字符串前后有空格没事:>>> print(int(" 3 "))3但是下面这种带小数点的情况是不可取的:>>> print(int("3.0"))Traceback (most recent call last): File "<stdin>", line 1, in <module>ValueError: invalid literal for int() with base 10原创 2017-04-01 22:43:24 · 12385 阅读 · 2 评论 -
Python读写/追加excel文件Demo
三个工具包python操作excel的三个工具包如下,注意,只能操作.xls,不能操作.xlsx。xlrd: 对excel进行读相关操作xlwt: 对excel进行写相关操作xlutils: 对excel读写操作的整合这三个工具包都可以直接使用pip进行下载:sudo pip install xlrdsudo pip install xlwtsudo pip install xlutil原创 2017-04-02 17:40:28 · 24832 阅读 · 0 评论 -
用Scrapy shell调试xpath
昨日一道友问我会不会用scrapy shell检查xpath,我表示没搞过,都是直接在代码里硬怼,尴尬。然而其实也没什么难的,在这记录一下方法。首先还是安利一下国内翻译的scrapy文档,虽然最新的翻译版本是1.0版,scrapy已经出到1.3版,但是这份文档仍然非常好用,只是有些版本差异带来的小坑。在命令行键入scrapy shell进入scrapy shell终端,如果你安装了IPython,原创 2017-01-17 11:44:39 · 13269 阅读 · 0 评论 -
基于Redis的布隆过滤器的实现
项目简介包含一个基于Redis的布隆过滤器的实现,以及应用到Scrapy中的Demo。地址:BloomFilterRedis布隆过滤器网上有很多介绍,推荐《数学之美》,介绍的很详尽,此处不再赘述。哈希函数布隆过滤器中需要n个哈希函数,我使用的是Arash Partow提供的常见哈希函数。建立在Redis上的布隆过滤器Redis中有一个数据结构叫做Bitmap(下方有官网详解),它提供一个最大长度为5原创 2017-04-30 17:57:51 · 30433 阅读 · 1 评论 -
Scrapy定向爬虫教程(一)——创建运行项目和基本介绍
前言目前网上的Scrapy中文教程比较少,而且大多教程使用的Scrapy版本较老,比如说这个Scrapy 0.25 文档,如其名,上古时期的翻译文档;再比如极客学院的视频教程使用的是1.0.x版本,跟新版相比还是有出入。这种情况使得新手入门Scrapy较为困难,而且各种掉坑。本人也是只刚入门的菜鸟,我希望能用菜鸟的语言给其他想要踏进Scrapy大门的小菜鸟指引一条道路。至少比我踩得坑少点吧^-^。开原创 2016-10-13 22:34:09 · 22095 阅读 · 3 评论 -
Scrapy+PhantomJS+Selenium动态爬虫
转自http://jiayi.space/post/scrapy-phantomjs-seleniumdong-tai-pa-chong#fb_new_comment很多网页具有动态加载的功能,简单的静态页面爬虫对它就无能为力了。这时候就需要PhantomJS+Selenium两大神器,再加上Scrapy爬虫框架,就可以拼凑成一个动态爬虫。PhantomJS简单点说PhantomJS就是一个没有界转载 2017-04-27 16:43:56 · 22619 阅读 · 6 评论 -
Django配置Ajax跨域调用/设置Cookie
背景前段时间感觉自己使用Hexo搭建的个人独立博客使用起来颇为无力(大抵是多说关服的原因),遂萌生出了自己给自己定制一个博客的想法,恰巧又赶上了学校的“软件课程设计”,要求做一个基于数据库的软件,于是借此契机,筹划自己博客的开发。然而学校这边的条条杠杠是很多的,不得不把自己本来的需求“个人博客”更改为“博客平台”。考虑到自己前台功底实在不敢恭维,于是拉了隔壁寝专攻前台的江某某合作。经过江某某的一番教原创 2017-06-28 23:24:13 · 5647 阅读 · 4 评论 -
No module named 'django.templates'起因和解决
当我跟着django官网上的教程写到template模板这一部分的时候,出现了上述问题No module named 'django.templates'这我是懵逼的,我代码里压根没直接调用django.templates,而是调用了django.shortcuts.render,由它间接调用了前者,为什么内部django的内部逻辑会出错呢?当然还是自己错了……具StackOverFlow上Hoan原创 2017-10-23 21:06:13 · 6676 阅读 · 3 评论 -
Celery ValueError: not enough values to unpack (expected 3, got 0)的解决方案
背景最近因项目需要,学习任务队列Celery的用法,跟着官网写Demo,出现如题错误,最终在github的Issues里找到解决办法,记录如下。场景还原本地环境如下:Windows 10Python 3.5.2Celery 4.1.0我是跟着这个前人翻译的中文文档敲的Demo。代码tasks.py:from celery import Celerya原创 2018-01-12 19:56:13 · 46248 阅读 · 38 评论 -
震惊!Selenium分手PhantomJS
背景今天本地调试基于Selenium+PhantomJS的动态爬虫程序顺利结束后,着手部署到服务器上,刚买的热乎的京东云,噼里啪啦一顿安装环境,最后跑的时候报了这么个错误:UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Fir...原创 2018-02-14 00:26:04 · 38345 阅读 · 24 评论 -
爬虫爬到含空格的url的处理办法
道友问我的一个问题,之前确实没遇见过,在此记录一下。问题描述在某网站主页提取url进行迭代,爬虫请求主页时没有问题,返回正常,但是在访问在主页提取到的url时出现了400状态码(400 Bad Request)。结论先贴出结论来,如果url里有空格的话,要把空格替换成%20,也就是url编码,否则就会出现400。解决过程首先百度了一下400状态码什么意思: 400页面是当用户在打开网页时,返回给原创 2017-03-17 19:40:09 · 3686 阅读 · 0 评论 -
探究在线课程时长与观看人数的关系——以极客学院为例
背景看网络课程是假期充电的好方法,遇到一节短短的干货网络课,真是让人受益匪浅、回味无穷。但不知大家有没有类似的感受,当你在线上课程平台看到一个感兴趣的课程,并迫不及待的点进去一探究竟时,巨长的课程时长让你的热情瞬间下降了一半。就算仍然饶有兴致的开始了学习,中途可能就打哈哈流泪进而放弃了,下次再看到课程时间过长的,直接pass!是不是就我自己有这个毛病呢?闲来无事,用数据分析的方法来对这个问题一探究竟原创 2017-02-14 17:49:03 · 1506 阅读 · 0 评论 -
Ubuntu16.04安装Scrapy命令
背景命令行下有三种安装Scrapy的方式:apt-get:千万不要用,因为你会下载到一个上古时期的Scrapy版本,产生一系列与你参考教程的代码不兼容的问题easy_install:我没有安装成功pip:Scrapy官网上推荐的下载方式,我们使用这种方法安装首先python、lxml、OpenSSL这些工具Ubuntu是自带的,不用管它们。其次安装pip,在命令行中执行以下命令:sudo a原创 2016-10-13 22:25:02 · 13846 阅读 · 0 评论 -
Python删除某一目录下的空文件(夹)
Python删除某一目录下的空文件(夹)用途输入文件夹路径,将此文件夹下所有的空文件夹和空文件删除,算是文件操作的一个习作吧。我拿它做什么就不广而告之了。代码# coding: utf-8import os # 引入文件操作库def CEF(path): """ CLean empty files, 清理空文件夹和空文件 :param path: 文件路径,检查此文件路径原创 2016-10-13 21:50:52 · 15467 阅读 · 6 评论 -
Win10下的Python环境配置
Win10下的Python环境配置原料64位Windows10 专业版安装Python访问python的官方网站www.python.org,点击download,如图一 选择2.7版本,如图二下载好图三所示文件双击打开上述安装程序,选择是否给所有用户使用,默认是给全局,点Next 选择安装路径,选好后Next选择要安装的模块,默认即可,Next 安装完了,点击Finash 去安装目录看一下目录结构原创 2016-10-13 22:07:55 · 17032 阅读 · 7 评论 -
Win10下pip的安装
pip简介pip 是一个安装和管理 Python 包的工具,通过pip我们能够轻松地下载和卸载python的第三方包。原料64位Windows10 专业版python 2.7.12(没有安装python的同学请戳链接Win10下的Python环境配置)下载安装包进入python官方网站,点击上方导航栏的PyPI,如图一在进入的页面右上方的搜索框输入pip,点击search按钮,如图二在搜索列表原创 2016-10-13 22:23:42 · 62370 阅读 · 8 评论 -
Scrapy定向爬虫教程(三)——爬取多个页面
本节内容本部分所实现的功能是,批量的爬取网页信息,不再是像以前那样只能下载一个页面了。也就是说,分析出网页的url规律后,用特定的算法去迭代,达到把整个网站的有效信息都拿下的目的。 因为本部分讲完后,功能已经到了可以使用的地步,所以我把本部分的结果独立出来,把项目上传到了github,小伙伴可以下载参考,地址https://github.com/kongtianyi/heartsong。教程余下的原创 2016-10-13 22:50:20 · 30946 阅读 · 1 评论 -
Scrapy定向爬虫教程(二)——提取网页内容
本节内容在这一小结,我将介绍如何使用Scrapy通过Selector选择器从网页中提取出我们想要的内容,并将这些内容存放到本地文件。 我们的目标网页是http://www.heartsong.top/forum.php?mod=viewthread&tid=8,一个有七层楼的帖子。我们要获取到每一层楼的下列信息: * 所属主题帖的标题 * 所属主题帖的url * 这一楼层的作者 * 这一楼原创 2016-10-13 22:41:18 · 11484 阅读 · 16 评论 -
Scrapy定向爬虫教程(四)——数据存入MongoDB
本节内容这一小结我们共同学习把Scrapy爬取到的数据存储到MongoDB数据库中。其中包括以下知识:Linux下MongoDB的安装pymongo的安装Scrapy + pymongoRobmongo的下载使用我已将本节内容的源码传至本项目的useMongoDB分支,不学习本节不影响以后的教程学习。安装MongoDB使用apt-get进行安装sudo apt-get install mo原创 2016-10-14 14:05:16 · 17402 阅读 · 10 评论 -
Scrapy定向爬虫教程(六)——分析表单并回帖
本节内容在某些时候,网站的某些内容的访问不仅仅需要用户登录,而且需要回复才能看到全部内容,如下图。所以我们需要通过模拟表单提交实现用爬虫回帖,进而获取到隐藏内容。本节就来介绍模拟表单提交的方法,github地址:https://github.com/kongtianyi/heartsong/tree/reply前提你已经了解了HTML表单的相关知识(这个很好找)和scrapy的简单功能以及配置Coo原创 2016-11-05 10:59:05 · 6699 阅读 · 4 评论 -
Scrapy定向爬虫教程(五)——保持登陆状态
本节内容在访问网站的时候,我们经常遇到有些页面必须用户登录才能访问。这个时候我们之前写的傻傻的爬虫就被ban在门外了。所以本节,我们给爬虫配置cookie,使得爬虫能保持用户已登录的状态,达到获得那些需登录才能访问的页面的目的。由于本节只是单纯的想保持一下登陆状态,所以就不写复杂的获取页面了,还是像本教程的第一部分一样,下载个网站主页验证一下就ok了。本节github戳此处。原理一般情况下,网站通过原创 2016-10-15 12:16:27 · 21280 阅读 · 7 评论 -
@contextmanager:Python实现with结构的好方法
常见with结构常见的with结构是在进行文件操作时,比如# 中规中矩的写法f = open("test.txt", "w")f.write("hello world!")f.close()# 采用with结构with open("test.txt", "w") as f: f.write("hello world!")这个结构的好处,一个是简洁,一个是当我们对文件操作的逻辑很长的时候,原创 2016-10-25 20:13:46 · 6143 阅读 · 0 评论 -
码出你的第一个Django app——Django官方教程(一)
译者: 官方原文链接https://docs.djangoproject.com/en/1.10/intro/tutorial01/,如有错译或理解偏差,请不吝批评指正,先行谢过!码出你的第一个Django app,第一部分让我们通过实例来学习。这个教程会带领你创建一个基础的投票应用。本教程由两部分组成:一个供用户查看和投票的公共站点一个供管理员对投票进行增删改查的站点我们假设你已翻译 2016-11-06 15:58:32 · 5030 阅读 · 1 评论 -
Ubuntu 16.04使用python3.x相关
下载pip3python 3.x版本使用pip3,它会把你想下载的包放到usr/local/lib/python3.5/dist-packages/下,而非usr/local/lib/python2.7/dist-packages/下。sudo apt-get install python3-pip如果你使用的是python 2.x,想下载3.x的包,那么用命令sudo pip3 install x原创 2016-11-07 09:49:47 · 10217 阅读 · 0 评论 -
win10安装python3.x+scrapy
下载安装python3官网下载就好,https://www.python.org/downloads/release/python-352/用installer下载比较方便,它直接把环境变量都帮你配了。升级pip安装好之后在cmd里执行python -m pip install -upgrade pip把pip提到最新版本下载lxmllxml是解析网页用的,scrapy依赖于它,它是一个第三方的库,原创 2016-11-07 23:00:00 · 2839 阅读 · 0 评论 -
zerorpc-python官方入门
原文地址:http://www.zerorpc.io/一个易于使用的,直观的,跨语言的RPCzerorpc是一个在服务端进程上提供分布式通信的轻量级的、可靠的跨语言的库。它基于ZeroMQ和MessagePack。提供流式相应(streamed response)——就像python的生成器(generators)——这让zerorpc不仅仅是个典型的RPC引擎。内置心跳包、超时监测以及从失败请求翻译 2017-01-14 17:10:32 · 7159 阅读 · 0 评论 -
Python爬虫爬取动态页面思路+实例(二)
注意:Selenium+PhantomJS已成历史,看官看完本文后不妨再浏览一下震惊!Selenium分手PhantomJS简介上篇Python爬虫爬取动态页面思路+实例(一)提到,爬取动态页面有两种方法分析页面请求selenium模拟浏览器行为(这篇介绍这个)理论上来讲,这种方法可以应对各种动态加载,因为模拟人的行为嘛,如果人自己用浏览器来看网页都加载不出数据来,这...原创 2016-12-29 11:07:39 · 31462 阅读 · 6 评论