每天都能弹出一个窗口wwwwww.266hei.comcom有用吗

&blockquote&作者:zhaikun
风控建模屌丝一枚,现居于北京
Python爱好者社区--专栏作者&br&个人微信公众号:Python数据分析与评分卡建模&br&公众号:Python爱好者社区&/blockquote&&p&&br&&/p&&p&今天给关注我微信的小伙伴们一点福利,教大家怎么实现ocr识别。&/p&&p&详细教程见:&a href=&https://link.zhihu.com/?target=https%3A//cloud.baidu.com/doc/OCR/OCR-Python-SDK.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&cloud.baidu.com/doc/OCR&/span&&span class=&invisible&&/OCR-Python-SDK.html&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&br&&/p&&p&所有图片均来自百度搜索,如果侵权,请联系删除。&/p&&p&&br&&/p&&p&现在开始展示:&/p&&p&&br&&/p&&p&1.文本识别:&/p&&p&&br&&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-a5ca9de60c2_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&837& data-rawheight=&401& class=&origin_image zh-lightbox-thumb& width=&837& data-original=&https://pic1.zhimg.com/v2-a5ca9de60c2_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-2583ccceb796fbbc16daa70_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&794& data-rawheight=&319& class=&origin_image zh-lightbox-thumb& width=&794& data-original=&https://pic4.zhimg.com/v2-2583ccceb796fbbc16daa70_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&2.身份证识别:&/p&&p&&br&&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-d21cb078e09a02e75325_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&802& data-rawheight=&510& class=&origin_image zh-lightbox-thumb& width=&802& data-original=&https://pic1.zhimg.com/v2-d21cb078e09a02e75325_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-80a83aaa65_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&750& data-rawheight=&437& class=&origin_image zh-lightbox-thumb& width=&750& data-original=&https://pic4.zhimg.com/v2-80a83aaa65_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&3.银行卡识别:&/p&&p&&br&&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-d1dfd69afe829f4bf4c32_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&756& data-rawheight=&482& class=&origin_image zh-lightbox-thumb& width=&756& data-original=&https://pic3.zhimg.com/v2-d1dfd69afe829f4bf4c32_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-27b7cd0cf75e6990316f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&612& data-rawheight=&178& class=&origin_image zh-lightbox-thumb& width=&612& data-original=&https://pic1.zhimg.com/v2-27b7cd0cf75e6990316f_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&4.行驶证识别:&/p&&p&&br&&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-d7a4b24c8cc54fb2965ebf_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&828& data-rawheight=&591& class=&origin_image zh-lightbox-thumb& width=&828& data-original=&https://pic3.zhimg.com/v2-d7a4b24c8cc54fb2965ebf_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-73d6bb196fff47caace57ff583f58bb3_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&788& data-rawheight=&356& class=&origin_image zh-lightbox-thumb& width=&788& data-original=&https://pic2.zhimg.com/v2-73d6bb196fff47caace57ff583f58bb3_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&5.营业执照识别:&/p&&p&&br&&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-d586c48b05d155f72eac8eecea10c2a4_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&809& data-rawheight=&513& class=&origin_image zh-lightbox-thumb& width=&809& data-original=&https://pic4.zhimg.com/v2-d586c48b05d155f72eac8eecea10c2a4_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-407eed0d2e5c3bc5c9447d9cdbe5547a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&722& data-rawheight=&397& class=&origin_image zh-lightbox-thumb& width=&722& data-original=&https://pic4.zhimg.com/v2-407eed0d2e5c3bc5c9447d9cdbe5547a_r.jpg&&&/figure&
作者:zhaikun 风控建模屌丝一枚,现居于北京 Python爱好者社区--专栏作者 个人微信公众号:Python数据分析与评分卡建模 公众号:Python爱好者社区 今天给关注我微信的小伙伴们一点福利,教大家怎么实现ocr识别。详细教程见: 所有图片…
&figure&&img src=&https://pic2.zhimg.com/v2-bcf1d67f78ec87db99e2db25022fa26d_b.jpg& data-rawwidth=&690& data-rawheight=&690& class=&origin_image zh-lightbox-thumb& width=&690& data-original=&https://pic2.zhimg.com/v2-bcf1d67f78ec87db99e2db25022fa26d_r.jpg&&&/figure&&p&今天为大家整理了32个Python爬虫项目。&/p&&p&整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心。所有链接指向GitHub,祝大家玩的愉快~O(∩_∩)O&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/Chyroc/WechatSogou& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&WechatSogou&/a& [1]- 微信公众号爬虫。基于搜狗微信搜索的微信公众号爬虫接口,可以扩展成基于搜狗搜索的爬虫,返回结果是列表,每一项均是公众号具体信息字典。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/lanbing510/DouBanSpider& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&DouBanSpider&/a& [2]- 豆瓣读书爬虫。可以爬下豆瓣读书标签下的所有图书,按评分排名依次存储,存储到Excel中,可方便大家筛选搜罗,比如筛选评价人数&1000的高分书籍;可依据不同的主题存储到Excel不同的Sheet ,采用User Agent伪装为浏览器进行爬取,并加入随机延时来更好的模仿浏览器行为,避免爬虫被封。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/LiuRoy/zhihu_spider& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&zhihu_spider&/a& [3]- 知乎爬虫。此项目的功能是爬取知乎用户信息以及人际拓扑关系,爬虫框架使用scrapy,数据存储使用mongo&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/airingursb/bilibili-user& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&bilibili-user&/a& [4]- Bilibili用户爬虫。总数据数:,抓取字段:用户id,昵称,性别,头像,等级,经验值,粉丝数,生日,地址,注册时间,签名,等级与经验值等。抓取之后生成B站用户数据报告。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/LiuXingMing/SinaSpider& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&SinaSpider&/a& [5]- 新浪微博爬虫。主要爬取新浪微博用户的个人信息、微博信息、粉丝和关注。代码获取新浪微博Cookie进行登录,可通过多账号登录来防止新浪的反扒。主要使用 scrapy 爬虫框架。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/gnemoug/distribute_crawler& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&distribute_crawler&/a& [6]- 小说下载分布式爬虫。使用scrapy,Redis, MongoDB,graphite实现的一个分布式网络爬虫,底层存储MongoDB集群,分布式使用Redis实现,爬虫状态显示使用graphite实现,主要针对一个小说站点。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/yanzhou/CnkiSpider& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CnkiSpider&/a& [7]- 中国知网爬虫。设置检索条件后,执行src/CnkiSpider.py抓取数据,抓取数据存储在/data目录下,每个数据文件的第一行为字段名称。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/lanbing510/LianJiaSpider& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&LianJiaSpider&/a& [8]- 链家网爬虫。爬取北京地区链家历年二手房成交记录。涵盖链家爬虫一文的全部代码,包括链家模拟登录代码。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/taizilongxu/scrapy_jingdong& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&scrapy_jingdong&/a& [9]- 京东爬虫。基于scrapy的京东网站爬虫,保存格式为csv。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/caspartse/QQ-Groups-Spider& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&QQ-Groups-Spider&/a& [10]- QQ 群爬虫。批量抓取 QQ 群信息,包括群名称、群号、群人数、群主、群简介等内容,最终生成 XLS(X) / CSV 结果文件。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/hanc00l/wooyun_public& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&wooyun_public&/a&[11]-乌云爬虫。 乌云公开漏洞、知识库爬虫和搜索。全部公开漏洞的列表和每个漏洞的文本内容存在MongoDB中,大概约2G内容;如果整站爬全部文本和图片作为离线查询,大概需要10G空间、2小时(10M电信带宽);爬取全部知识库,总共约500M空间。漏洞搜索使用了Flask作为web server,bootstrap作为前端。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/simapple/spider& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&spider&/a&[12]- hao123网站爬虫。以hao123为入口页面,滚动爬取外链,收集网址,并记录网址上的内链和外链数目,记录title等信息,windows7 32位上测试,目前每24个小时,可收集数据为10万左右&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/fankcoder/findtrip& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&findtrip&/a& [13]- 机票爬虫(去哪儿和携程网)。Findtrip是一个基于Scrapy的机票爬虫,目前整合了国内两大机票网站(去哪儿 + 携程)。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/leyle/163spider& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&163spider&/a& [14] - 基于requests、MySQLdb、torndb的网易客户端内容爬虫&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/dontcontactme/doubanspiders& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&doubanspiders&/a&[15]- 豆瓣电影、书籍、小组、相册、东西等爬虫集&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/LiuXingMing/QQSpider& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&QQSpider&/a& [16]- QQ空间爬虫,包括日志、说说、个人信息等,一天可抓取 400 万条数据。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/Shu-Ji/baidu-music-spider& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&baidu-music-spider&/a& [17]- 百度mp3全站爬虫,使用redis支持断点续传。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/pakoo/tbcrawler& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&tbcrawler&/a&[18]- 淘宝和天猫的爬虫,可以根据搜索关键词,物品id来抓去页面的信息,数据存储在mongodb。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/benitoro/stockholm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&stockholm&/a& [19]- 一个股票数据(沪深)爬虫和选股策略测试框架。根据选定的日期范围抓取所有沪深两市股票的行情数据。支持使用表达式定义选股策略。支持多线程处理。保存数据到JSON文件、CSV文件。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/k1995/BaiduyunSpider& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&BaiduyunSpider&/a&[20]-百度云盘爬虫。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/Qutan/Spider& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Spider&/a&[21]-社交数据爬虫。支持微博,知乎,豆瓣。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/jhao104/proxy_pool& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&proxy pool&/a&[22]-Python爬虫代理IP池(proxy pool)。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/RitterHou/music-163& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&music-163&/a&[23]-爬取网易云音乐所有歌曲的评论。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/kulovecc/jandan_spider& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&jandan_spider&/a&[24]-爬取煎蛋妹纸图片。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/jackgitgz/CnblogsSpider& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CnblogsSpider&/a&[25]-cnblogs列表页爬虫。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/qiyeboy/spider_smooc& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&spider_smooc&/a&[26]-爬取慕课网视频。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/yanzhou/CnkiSpider& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CnkiSpider&/a&[27]-中国知网爬虫。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/littlethunder/knowsecSpider2& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&knowsecSpider2&/a&[28]-知道创宇爬虫题目。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/x-spiders/aiss-spider& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&aiss-spider&/a&[29]-爱丝APP图片爬虫。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/szcf-weiya/SinaSpider& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&SinaSpider&/a&[30]-动态IP解决新浪的反爬虫机制,快速抓取内容。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/Kevinsss/csdn-spider& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&csdn-spider&/a&[31]-爬取CSDN上的博客文章。&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/changetjut/ProxySpider& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ProxySpider&/a&[32]-爬取西刺上的代理IP,并验证代理可用性&/p&&p&更新:&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/GuozhuHe/webspider& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&webspider&/a&[33]-本系统是一个主要使用python3, celery和requests来爬取职位数据的爬虫,实现了定时任务,出错重试,日志记录,自动更改Cookies等的功能,并使用ECharts + Bootstrap 来构建前端页面,来展示爬取到的数据。&/p&&p&此爬虫由知友 &a class=&member_mention& href=&http://www.zhihu.com/people/895d702d02fa3a5ba7bee& data-hash=&895d702d02fa3a5ba7bee& data-hovercard=&p$b$895d702d02fa3a5ba7bee&&@何何何何何何何何&/a& 自荐~&/p&&figure&&img src=&https://pic2.zhimg.com/v2-d27d4b93f8bd5f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1642& data-rawheight=&1308& class=&origin_image zh-lightbox-thumb& width=&1642& data-original=&https://pic2.zhimg.com/v2-d27d4b93f8bd5f_r.jpg&&&/figure&&hr&&p&你想更深入了解学习Python知识体系,你可以看一下我们花费了一个多月整理了上百小时的几百个知识点体系内容:&/p&&p&&a href=&http://link.zhihu.com/?target=http%3A//www.magedu.com/73198.html%3FPython_wenzhang_zhihu_jinke_ziyuanzhengli32gepachongxiangmurangniyicichidaocheng_& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【超全整理】《Python自动化全能开发从入门到精通》笔记全放送&/a&&/p&
今天为大家整理了32个Python爬虫项目。整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心。所有链接指向GitHub,祝大家玩的愉快~O(∩_∩)O [1]- 微信公众号爬虫。基于搜狗微信搜索的微信公众号爬虫接口,可以扩展成基于搜狗搜…
&figure&&img src=&https://pic3.zhimg.com/v2-ef2d9c4ab51cb6ae216e_b.jpg& data-rawwidth=&640& data-rawheight=&475& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic3.zhimg.com/v2-ef2d9c4ab51cb6ae216e_r.jpg&&&/figure&&p&知乎新人一枚,最近在工作中需要抓取一些动态页面的信息,关键数据使用js加载到页面中,使用requests无法直接获取,json数据获取后未全部加载到页面中,给抓取带来了不小的难度,多次尝试后找到了一种较可行的方法。在搜索资料的过程中,发现很多人遇到过类似的问题,因此分享我的方法与大家交流一下。&br&&/p&&p&利用chrome的开发者工具的network进行监控,取得网页加载过程中实际调用的接口,检查cookies发现,大部分数据接口需带有动态的token才能取到数据。暂时无法模拟出动态token,因此这部分接口无法直接调用。&/p&&p&利用selenium + chrome 发现取得的页面数据中有一部分未完全加载,但接口实际已经取得了完整的数据,这种方法也只能只能pass。&/p&&p&经过反复搜索和测试后,终于找到一个可行的方法:利用&a href=&https://link.zhihu.com/?target=https%3A//bmp.lightbody.net/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&BrowserMob Proxy&/a&实现类似chrome的开发者工具中network的功能,监控浏览器中该页面的request,获取对应的response,从而得到对应的json数据。其大致原理是设置一个本地代理,并监控浏览器通过该代理的网络活动。&/p&&p&最后,我的解决方案是:python3 + selenium + chrome + browsermob-proxy,当然也可以采用firefox, 或phantomjs等浏览器,系统是WIN7 64位。&/p&&p&下载好&a href=&https://link.zhihu.com/?target=https%3A//bmp.lightbody.net/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&BrowserMob Proxy&/a&和&a href=&https://link.zhihu.com/?target=https%3A//sites.google.com/a/chromium.org/chromedriver/downloads& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&chromedriver&/a&,并记住对应的路径,稍后需要配置。&/p&&p&另外,使用browsermob-proxy需要安装&a href=&https://link.zhihu.com/?target=https%3A//www.java.com/zh_CN/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Java&/a&依赖环境,首次安装后可能需要重启。&/p&&p&python的环境可安装&a href=&https://link.zhihu.com/?target=https%3A//www.continuum.io/downloads& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&anaconda&/a&获得,然后是安装额外的python库&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&pip install browsermob-proxy
pip install selenium
&/code&&/pre&&/div&&p&软件环境配置完成后,可开始搭建抓取动态网页的框架,下面是我做的一个简单框架(browsermonitor.py),其中未涉及数据的加工,可针对需要抓取的网页,直接继承后,根据需求加工数据:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&&&&step 1 导入依赖库&&&
from os import path
from browsermobproxy import Server
from selenium import webdriver
&&&step 2 新建浏览器监控类&&&
class Monitor(object):
step 3 配置chromedriver 和 browermobproxy 路径
需要使用完整路径,否则browsermobproxy无法启动服务
我是将这两个部分放到了和monitor.py同一目录
同时设置chrome为屏蔽图片,若需要抓取图片可自行修改
PROXY_PATH = path.abspath(&./browsermob-proxy/bin/browsermob-proxy.bat&)
CHROME_PATH = path.abspath(&./chromedriver.exe&)
CHROME_OPTIONS = {&profile.managed_default_content_settings.images&:2}
def __init__(self):
类初始化函数暂不做操作
def initProxy(self):
step 4 初始化 browermobproxy
设置需要屏蔽的网络连接,此处屏蔽了css,和图片(有时chrome的设置会失效),可加快网页加载速度
新建proxy代理地址
self.server = Server(self.PROXY_PATH)
self.server.start()
self.proxy = self.server.create_proxy()
self.proxy.blacklist([&http://.*/.*.css.*&,&http://.*/.*.jpg.*&,&http://.*/.*.png.*&,&http://.*/.*.gif.*&],200)
def initChrome(self):
step 5 初始化selenium, chrome设置
将chrome的代理设置为browermobproxy新建的代理地址
chromeSettings = webdriver.ChromeOptions()
chromeSettings.add_argument('--proxy-server={host}:{port}'.format(host = &localhost&, port = self.proxy.port))
chromeSettings.add_experimental_option(&prefs&, self.CHROME_OPTIONS)
self.driver = webdriver.Chrome(executable_path = self.CHROME_PATH, chrome_options = chromeSettings)
def genNewRecord(self, name = &monitor&, options={'captureContent':True}):
step 6 新建监控记录,设置内容监控为True
self.proxy.new_har(name,options = options)
def getContentText(self, targetUrl):
step 7 简单的获取目标数据的函数
其中 targetUrl 为浏览器获取对应数据调用的url,需要用正则表达式表示
if self.proxy.har['log']['entries']:
for loop_record in self.proxy.har['log']['entries']:
if re.fullmatch(targetUrl , loop_record[&request&]['url']):
return loop_record[&response&]['content'][&text&]
except Exception as err:
print(err)
return None
def Start(self):
&&&step 8 配置monitor的启动顺序&&&
self.initProxy()
self.initChrome()
except Exception as err:
print(err)
def Quit(self):
step 9 配置monitor的退出顺序
代理sever的退出可能失败,目前是手动关闭,若谁能提供解决方法,将不胜感激
self.driver.close()
self.driver.quit()
self.proxy.close()
self.server.process.terminate()
self.server.process.wait()
self.server.process.kill()
except OSError:
&/code&&/pre&&/div&&p&下面以淘宝搜索“薯条”为例(仅为简单测试,不代表其api不能直接调用)&/p&&p&代码如下:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&from browermonitor import Monitor
monitor = Monitor()
monitor.Start()
monitor.genNewRecord()
monitor.driver.get(&https://s.taobao.com/search?q=薯条&)
targetUrl = &https://s.taobao.com/api.*?&
text = monitor.getContentText(targetUrl)
tycmonitor.Quit()
&/code&&/pre&&/div&&p&获取到的文本数据截图如下:&/p&&p&&figure&&img src=&https://pic4.zhimg.com/v2-e7be52bd34c264aa4c5794_b.jpg& data-rawwidth=&1243& data-rawheight=&724& class=&origin_image zh-lightbox-thumb& width=&1243& data-original=&https://pic4.zhimg.com/v2-e7be52bd34c264aa4c5794_r.jpg&&&/figure&之后就可以根据需求进一步处理了。&/p&&p&这个框架可用于抓取一些较复杂的动态页面上的数据;利用selenium进行模拟点击等操作,可以进一步扩展数据获取的范围;通过设置黑名单可拦截不需要的网络请求从而提升抓取速度。但配置起来较为麻烦。&/p&&p&作为一名初学者,代码中肯定存在很多不足,还请大家多多指正。如果大家有其他的解决方法,欢迎随时与我交流。&/p&&p&&b&&u&转载请联系作者! &/u&&/b&&/p&
知乎新人一枚,最近在工作中需要抓取一些动态页面的信息,关键数据使用js加载到页面中,使用requests无法直接获取,json数据获取后未全部加载到页面中,给抓取带来了不小的难度,多次尝试后找到了一种较可行的方法。在搜索资料的过程中,发现很多人遇到过类…
&figure&&img src=&https://pic4.zhimg.com/v2-30d2dda566da8763b29fab876dd7bd4f_b.jpg& data-rawwidth=&1049& data-rawheight=&579& class=&origin_image zh-lightbox-thumb& width=&1049& data-original=&https://pic4.zhimg.com/v2-30d2dda566da8763b29fab876dd7bd4f_r.jpg&&&/figure&&p&关于基础的网络数据抓取相关内容,本公众号已经做过很多次分享,特别是R语言的爬虫框架(RCurl+XML/httr+rvest[xml2+selectr])已经形成了较为丰富的教程系统。&/p&&p&但是所有这些都是基于静态页面的(抓包与API访问的除外),很多动态网页不提供API访问,这样就只能寄希望于selenium这种基于浏览器驱动技术来完成。&/p&&p&好在R语言中已经有了selenium接口包——RSelenium包,这为我们爬取动态网页提供了可能。我在今年年初写过一个实习僧网站的爬虫,那个是使用R语言中另一个基于selenium驱动的接口包——Rwebdriver来完成的。&/p&&p&&u&&a href=&http://link.zhihu.com/?target=http%3A//mp.weixin.qq.com/s%3F__biz%3DMzA3Njc0NzA0MA%3D%3D%26mid%3D%26idx%3D1%26sn%3Dbfaa220d6f%26chksm%3D848c4376b3fbcac23462d3aec941cff5e2914a3bff47f8a6a89fd84ba%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&实习僧招聘网爬虫数据可视化&/a&&/u&&/p&&p&当时技术不太成熟,思路也比较幼稚,我使用了导航器硬生生的遍历了500页内容,虽然最后也爬完了所有数据,但是耗时较长(将近40分钟),效率比较低。(感兴趣的小伙伴儿可以参考下上面那篇,不过实习僧的官网近期有较大改版,现在爬取难度肯定要比当初难多了!那个代码可能无法使用了)&/p&&p&最近抽时间学习了下RSelenium包的相关内容,这里感谢陈堰平老师在R语言上海大会现场所做《用RSelenium打造灵活强大的网络爬虫》的演讲,虽然未达现场,但是有幸看完视频版,其中的几个细节解决了我近段时间的一些困惑,这里表示感谢。&/p&&p&&b&陈堰平老师主讲:《用RSelenium打造灵活强大的网络爬虫》&/b& &a href=&http://link.zhihu.com/?target=http%3A//www.xueqing.tv/course/88& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&xueqing.tv/course/88&/span&&span class=&invisible&&&/span&&/a& &b&一个老外关于RSelenium的入门视频(youtobe请自行翻墙):&/b& &a href=&http://link.zhihu.com/?target=https%3A//www.youtube.com/watch%3Fv%3Dic65SWRWrKA%26feature%3Dyoutu.be& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&youtube.com/watch?&/span&&span class=&invisible&&v=ic65SWRWrKA&feature=youtu.be&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&当前R语言中能做到解析动态网页的有以下几个包(欢迎补充):&/p&&ul&&li&&b&RSelenium(推荐)&/b&&/li&&li&Rwebdriver(不很成熟)&/li&&li&seleniumpipes(结合RSelenium更高效)&/li&&li&rdom(高级封装,灵活性不够)&/li&&li&Rcrawler(支持多进程)&/li&&li&webshot(专门用于动态网页截图)&/li&&/ul&&p&本节以下内容正式分享今日案例,目标是拉勾网(不要问为什么,因为之前我还没有爬过拉钩)!&/p&&p&在介绍案例之前,请确保系统具备以下条件:&/p&&p&&b&本地有selenium服务器并添加系统路径;&br&本地有plantomjs浏览器并添加系统路径;&br&安装了RSelenium包。&/b&&/p&&p&因为涉及到自动化点击操作,Chrome浏览器倒腾一下午硬是在点击环节出故障,找到了原因,因为拉勾网页面很长,而下一页按钮不在默认视窗范围内,使用了js脚本控制滑动条失败,原因不明,看到有人用firefox浏览器测试成功,我还没有试过,这里改用plantomjs无头浏览器(无需考虑元素是否被窗口遮挡的问题。)&/p&&p&&b&R语言版:&/b&&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&#!!!这两句是在cmd或者PowerShell中运行的!
#RSelenium服务未关闭之前,请务必保持该窗口状态!
###启动selenium服务:
java -jar selenium-server-standalone-3.3.1.jar
##selenium服务器也可以直接在R语言中启动(无弹出窗口)
system(&java -jar \&D:/selenium-server-standalone-2.53.1.jar\&&,wait = FALSE,invisible = FALSE)
library(&RSelenium&)
library(&magrittr&)
library(&xml2&)
&/code&&/pre&&/div&&p&&b&启动服务&/b&&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&#给plantomjs浏览器伪装UserAgent
eCap &- list(phantomjs.page.settings.userAgent = &Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/ Firefox/29.0&)
###伪装浏览器UserAgent,为什么即使使用plantomjs这种浏览器也需要伪装UA呢,
###因为plantomjs是专门用于web端页面测试的,通常都是在自己的web项目中测试web端功能,直接拿去抓别人的网站,默认的UA就是plantomjs;
###这是公然的挑衅!
###连接plantomjs服务
remDr &- remoteDriver(browserName = &phantomjs&, extraCapabilities = eCap)
&/code&&/pre&&/div&&p&&b&构建自动化抓取函数:&/b&&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&#自动化抓取函数:
myresult&-function(remDr,url){
###初始化一个数据框,用作后期收据收集之用!
myresult&-data.frame()
###调用后台浏览器(因为是plantomjs这种无头浏览器(headless),所以你看不到弹出窗口)
remDr$open()
###打开导航页面(也就是直达要抓取的目标网址)
remDr$navigate(url)
###初始化一个计时器(用于输出并查看任务进度)
while(TRUE){
#计时器开始计数:
#范回当前页面DOM
pagecontent&-remDr$getPageSource()[[1]]
#以下三个字段共用一部分祖先节点,所以临时建立了一个根节点(节省冗余代码)
con_list_item
&- pagecontent %&% read_html() %&% xml_find_all('//ul[@class=&item_con_list&]/li')
position.name
&- con_list_item %&% xml_attr(&data-positionname&)
position.company
&- con_list_item %&% xml_attr(&data-company&)
position.salary
&- con_list_item %&% xml_attr(&data-salary&)
#职位详情链接
position.link
&- pagecontent %&% read_html() %&% xml_find_all('//div[@class=&p_top&]/a') %&% xml_attr(&href&)
#职位经验要求
position.exprience
&- pagecontent %&% read_html() %&% xml_find_all('//div[@class=&p_bot&]/div[@class=&li_b_l&]') %&% xml_text(trim=TRUE)
#职位所述行业
position.industry
&- pagecontent %&% read_html() %&% xml_find_all('//div[@class=&industry&]') %&% xml_text(trim=TRUE) %&% gsub(&[[:space:]\\u00a0]+|\\n&, &&,.)
position.bonus
&- pagecontent %&% read_html() %&% xml_find_all('//div[@class=&list_item_bot&]/div[@class=&li_b_l&]') %&% xml_text(trim=TRUE) %&% gsub(&[[:space:]\\u00a0]+|\\n&, &/&,.)
#职位工作环境
position.environment&- pagecontent %&% read_html() %&% xml_find_all('//div[@class=&li_b_r&]') %&% xml_text(trim=TRUE)
mydata&- data.frame(position.name,position.company,position.salary,position.link,position.exprience,position.industry,position.bonus,position.environment,stringsAsFactors = FALSE)
#将本次收集的数据写入之前创建的数据框
myresult&-rbind(myresult,mydata)
#系统休眠0.5~1.5秒
Sys.sleep(runif(1,0.5,1.5))
#判断页面是否到尾部
if ( pagecontent %&% read_html() %&% xml_find_all('//div[@class=&page-number&]/span[1]') %&% xml_text() !=&30&){
#如果页面未到尾部,则点击下一页
remDr$findElement('xpath','//div[@class=&pager_container&]/a[last()]')$clickElement()
#但因当前任务进度
cat(sprintf(&第【%d】页抓取成功&,i),sep = &\n&)
#如果页面到尾部则跳出while循环
#跳出循环后关闭remDr服务窗口
remDr$close()
#但因全局任务状态(也即任务结束)
cat(&all work is done!!!&,sep = &\n&)
#返回最终数据
return(myresult)
&/code&&/pre&&/div&&p&&b&运行抓取函数&/b&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-82ee0fd56ff0dc334ea7711_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&601& data-rawheight=&618& class=&origin_image zh-lightbox-thumb& width=&601& data-original=&https://pic2.zhimg.com/v2-82ee0fd56ff0dc334ea7711_r.jpg&&&/figure&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&url &- &https://www.lagou.com/zhaopin&
myresult &- myresult(remDr,url)
DT::datatable(myresult)
&/code&&/pre&&/div&&figure&&img src=&https://pic1.zhimg.com/v2-9cfeeed51f127c05b345ee622b6fa838_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1280& data-rawheight=&780& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&https://pic1.zhimg.com/v2-9cfeeed51f127c05b345ee622b6fa838_r.jpg&&&/figure&&p&&b&Python:&/b&&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&import os,random,time
import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities
import DesiredCapabilities
from lxml import etree
&/code&&/pre&&/div&&p&&b&启动服务&/b&&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&dcap = dict(DesiredCapabilities.PHANTOMJS)
#这里也是伪装一下UA:
dcap[&phantomjs.page.settings.userAgent&] = (&Mozilla/5.0 (M Intel Mac OS X 10.9; rv:25.0) Gecko/ Firefox/25.0&)
#启动服务(python里面的selenium内置有selenium服务器,需要本地启动)
driver = webdriver.PhantomJS(desired_capabilities=dcap)
&/code&&/pre&&/div&&p&&b&构建抓取函数&/b&&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&def getlaogou(driver,url):
#初始化一个长度为0的空字典!以备之后收集数据
myresult = {
&position_name&:[],
&position_company&:[],
&position_salary&:[],
&position_link&:[],
&position_exprience&:[],
&position_industry&:[],
&position_environment&:[]
#导航到目标网址
driver.get(url)
#计时器初始化
while True:
#计时器累计计时:
#获取当前页面DOM
pagecontent = driver.page_source
#解析HTML文档
result = etree.HTML(pagecontent)
#使用字典内单个list的extend方法累计收集数据
myresult[&position_name&].extend(result.xpath('//ul[@class=&item_con_list&]/li/@data-positionname'))
myresult[&position_company&].extend(result.xpath('//ul[@class=&item_con_list&]/li/@data-company'))
myresult[&position_salary&].extend(result.xpath('//ul[@class=&item_con_list&]/li/@data-salary'))
myresult[&position_link&].extend(result.xpath('//div[@class=&p_top&]/a/@href'))
myresult[&position_exprience&].extend([ text.xpath('string(.)').strip() for text in
result.xpath('//div[@class=&p_bot&]/div[@class=&li_b_l&]')])
myresult[&position_industry&].extend([ text.strip() for text in
result.xpath('//div[@class=&industry&]/text()')])
myresult[&position_environment&].extend(result.xpath('//div[@class=&li_b_r&]/text()'))
#单次循环任务休眠
time.sleep(random.choice(range(3)))
#判断页面是否到尾部
if result.xpath('//div[@class=&page-number&]/span[1]/text()')[0] != '30':
#如果未到达页面尾部,则点击下一页:
driver.find_element_by_xpath('//div[@class=&pager_container&]/a[last()]').click()
#同时打印当前任务 状态!
print(&第【{}】页抓取成功!&.format(i))
#如果所有页面到达尾部,则跳出循环!
#打印全局任务状态
print(&everything is OK&)
#退出并关闭selenium服务!
driver.quit()
return pd.DataFrame(myresult)
&/code&&/pre&&/div&&p&&b&运行抓取程序&/b&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-79fb86fd4a33bdcc3a9bdd_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1280& data-rawheight=&445& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&https://pic2.zhimg.com/v2-79fb86fd4a33bdcc3a9bdd_r.jpg&&&/figure&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&url = &https://www.lagou.com/zhaopin&
mydata = getlaogou(driver,url)
&/code&&/pre&&/div&&p&在线课程请点击文末原文链接:&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//edu.hellobi.com/course/195/lessons& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Hellobi Live | R语言可视化在商务场景中的应用&/a&&br&往期案例数据请移步本人GitHub:&br&&a href=&http://link.zhihu.com/?target=https%3A//github.com/ljtyduyu/DataWarehouse/tree/master/File& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&github.com/ljtyduyu/Dat&/span&&span class=&invisible&&aWarehouse/tree/master/File&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&/p&
关于基础的网络数据抓取相关内容,本公众号已经做过很多次分享,特别是R语言的爬虫框架(RCurl+XML/httr+rvest[xml2+selectr])已经形成了较为丰富的教程系统。但是所有这些都是基于静态页面的(抓包与API访问的除外),很多动态网页不提供API访问,这样就…
&p&写过一段时间的爬虫,也遇到过与题主类似的问题,这里简单写下。&/p&&p&&b&一、对于动态页面,一般都是采取两种比较简单的方式&/b&。&/p&&p&第一种是直接分析请求,定位数据所在的JS文件,然后直接请求拿到数据。&/p&&p&比如JD上商品的价格,一般在源码是无法找到的。这种就比较简单,打开Network,总共就那么几条请求。以图书排行网页(&a href=&//link.zhihu.com/?target=http%3A//book.jd.com/booktop/0-0-0.html%3Fcategory%3D-0-10001-1& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&图书排行榜_热门图书_新书-图书【畅销 正版 折扣】-京东&/a&)为例.&/p&&p&首先找到文件,然后查看请求的地址,加个UA直接请求就OK。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-99ff8ba19f583df62daf8a4cd5862a76_b.jpg& data-size=&normal& data-rawwidth=&1050& data-rawheight=&537& class=&origin_image zh-lightbox-thumb& width=&1050& data-original=&https://pic3.zhimg.com/v2-99ff8ba19f583df62daf8a4cd5862a76_r.jpg&&&figcaption&JD&/figcaption&&/figure&&figure&&img src=&https://pic2.zhimg.com/v2-f619f46c68a4aae9f9b8e4f750eb4b71_b.jpg& data-size=&normal& data-rawwidth=&730& data-rawheight=&633& class=&origin_image zh-lightbox-thumb& width=&730& data-original=&https://pic2.zhimg.com/v2-f619f46c68a4aae9f9b8e4f750eb4b71_r.jpg&&&figcaption&JD&/figcaption&&/figure&&p&之后处理下字符串,再转化成json提取数据就可以了。这种比较简单,不在赘述。&/p&&p&&br&&/p&&p&第二种办法就是直接用selenium+PhantomJS比较方便了。一般就直接用它获取源码(这里获取的一般包含全部的数据了),然后还是和静态页面一样来解析然后拿数据。因为这种方法相对第一种速度会慢很多,所以一般只用来获取源码。相对于第一种方法,这种方法更加通用一些,因为有些动态加载的数据很难直接JS找到。&/p&&p&&br&&/p&&p&&b&二、模拟登录的两种方式&/b&&/p&&p&关于模拟登录,也是一个头疼的问题,出于简单考虑,一般也是只考虑两种方法。&/p&&p&第一种就是对于加密比较若的网站,直接POST数据过去就是了。比如一般的教务系统或者豆瓣这些orz...以登录豆瓣并获取签名为例,代码放在了&a href=&//link.zhihu.com/?target=https%3A//github.com/shenxiangzhuang/PythonDataAnalysis/blob/master/Ch1Spider/cookie/douban_login.py& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Github&/a&, 可以参考下。这里首次登录输出如下(因为现在还没有存储的cookie文件,所以会重新POST来登录):&/p&&figure&&img src=&https://pic2.zhimg.com/v2-c6f22e2d44fae20cdd6e1a4a4c33834d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&394& data-rawheight=&177& class=&content_image& width=&394&&&/figure&&p&&br&&/p&&p&再次运行,就可以直接用cookie登录了:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-224d9e4ccec3af420ce3f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&437& data-rawheight=&136& class=&origin_image zh-lightbox-thumb& width=&437& data-original=&https://pic4.zhimg.com/v2-224d9e4ccec3af420ce3f_r.jpg&&&/figure&&p&&br&&/p&&p&第二种就是涉及登录加密的网站,比如新浪微波,QQ空间,微信这些。这些麻烦一点的办法就是破解登录的加密算法然后也是通过直接POST数据来登录。像我这种比较菜的就喜欢用selenium然后记录下cookie...具体用这个方法简单写了两个爬虫,一个是&a href=&//link.zhihu.com/?target=http%3A//datahonor.com//Selenium%25E7%2588%25AC%25E5%258F%2596QQ%25E7%25A9%25BA%25E9%%25E8%25AF%25B4%25E8%25AF%25B4%25E4%25BF%25A1%25E6%2581%25AF/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&QQ空间说说&/a&的,一个是&a href=&//link.zhihu.com/?target=http%3A//datahonor.com//Python%25E6%258A%%258F%%25BE%25AE%25E4%25BF%25A1%25E6%E7%25AB%25A0/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&微信文章&/a&的,题主可以参考下。&/p&
写过一段时间的爬虫,也遇到过与题主类似的问题,这里简单写下。一、对于动态页面,一般都是采取两种比较简单的方式。第一种是直接分析请求,定位数据所在的JS文件,然后直接请求拿到数据。比如JD上商品的价格,一般在源码是无法找到的。这种就比较简单,打…
&p&下面这个解决方案可以解决中文乱码,但是每次都要附上这段代码,还是比较麻烦。有没有一劳永逸的解决办法呢?&/p&&p&也就是设置一次以后,不需要添加任何代码,就可以解决这个问题。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-96c2fceeab5c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&718& data-rawheight=&1278& data-watermark=&& data-original-src=&& data-watermark-src=&& data-private-watermark-src=&& data-tags=&politic& class=&origin_image zh-lightbox-thumb& width=&718& data-original=&https://pic1.zhimg.com/v2-96c2fceeab5c_r.jpg&&&/figure&&p&现在我给出就终结解决方案。&/p&&p&&b&首先,为什么会产生中文乱码?&/b&&/p&&p&matplotlib 初始化时首先要加载一个配置文件,字体设置也在这个配置文件中。之所有无法正常显示中文是因为&br&这个配置文件中没有加入中文字体,解决的办法是我们需要在这个配置文件中指定一个可用的中文字体。&/p&&p&&br&&/p&&p&&b&第1步,找到配置文件&/b&&/p&&p&我们可以用下面的代码找到 matplotlib 加载的配置文件路径。&/p&&div class=&highlight&&&pre&&code class=&language-python3&&&span class=&kn&&import&/span& &span class=&nn&&matplotlib&/span&
&span class=&n&&matplotlib&/span&&span class=&o&&.&/span&&span class=&n&&matplotlib_fname&/span&&span class=&p&&()&/span&
&/code&&/pre&&/div&&figure&&img src=&https://pic3.zhimg.com/v2-9a0c5b602aa2f0910fe29cffbc96b3a2_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&431& data-rawheight=&268& data-watermark=&& data-original-src=&& data-watermark-src=&& data-private-watermark-src=&& class=&origin_image zh-lightbox-thumb& width=&431& data-original=&https://pic3.zhimg.com/v2-9a0c5b602aa2f0910fe29cffbc96b3a2_r.jpg&&&/figure&&p&打开配置文件所在的路径,可以看到配置文件&b&matplotlibrc。&/b&&/p&&p&&b&同时,我们还能看到字体文件夹fonts,这里放置&/b&matplotlib使用的字体。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-9a0c5b602aa2f0910fe29cffbc96b3a2_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&431& data-rawheight=&268& data-watermark=&& data-original-src=&& data-watermark-src=&& data-private-watermark-src=&& class=&origin_image zh-lightbox-thumb& width=&431& data-original=&https://pic3.zhimg.com/v2-9a0c5b602aa2f0910fe29cffbc96b3a2_r.jpg&&&/figure&&p&&b&第2步,下载中文字体&/b&&/p&&p&在网站上下载 黑体SimHei 字体(&a href=&//link.zhihu.com/?target=http%3A//www.fontpalace.com/font-details/SimHei/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&fontpalace.com/font-det&/span&&span class=&invisible&&ails/SimHei/&/span&&span class=&ellipsis&&&/span&&/a&) ,该字体即有Windows字体也有Mac字体。这个字体安装文件我已经放到社群网盘中,你也可以在我微信公众号:猴子聊人物,中回复“资料”获取安装文件。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-efbba223e678ee_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&433& data-rawheight=&242& data-watermark=&& data-original-src=&& data-watermark-src=&& data-private-watermark-src=&& class=&origin_image zh-lightbox-thumb& width=&433& data-original=&https://pic2.zhimg.com/v2-efbba223e678ee_r.jpg&&&/figure&&p&复制下载的字体安装文件到matplotlib字体文件夹fonts中的ttf文件夹中,然后双击该字体进行安装。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-0ae28e0d3e889ec450b765a41e3b5f3e_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&422& data-rawheight=&286& data-watermark=&& data-original-src=&& data-watermark-src=&& data-private-watermark-src=&& class=&origin_image zh-lightbox-thumb& width=&422& data-original=&https://pic3.zhimg.com/v2-0ae28e0d3e889ec450b765a41e3b5f3e_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/v2-0ae28e0d3e889ec450b765a41e3b5f3e_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&422& data-rawheight=&286& data-watermark=&& data-original-src=&& data-watermark-src=&& data-private-watermark-src=&& class=&origin_image zh-lightbox-thumb& width=&422& data-original=&https://pic3.zhimg.com/v2-0ae28e0d3e889ec450b765a41e3b5f3e_r.jpg&&&/figure&&p&&b&第3步,修改配置文件&/b&&/p&&p&修改之前最好先备份下这个配置文件,万一修改错,还可以用备份文件还原。我一般比较喜欢将要修改的文件复制一份,并手动给他加上后缀.bak,表示备份backup。如果我修改原文件错误,想恢复到原来的状态,那我就可以将备份文件的后缀.bak删除,就能恢复了。&/p&&p&&br&&/p&&p&使用notepad软件打开 matplotlib的配置文件,如果你没有notepad这个软件,最好下载一个,因为这个软件可以打开各种格式的文件。&/p&&p&打开文件后,你可以使用查找功能找到 font.family 和 font.sans-serif这两行,去掉最前面的注释#,并在font.sans-serif这一行值中添加我们刚才安装的黑体SimHei&/p&&p&&br&&/p&&p&有的坐标轴的负号显示不正常,我们还要找到axes.unicode_minus这一行,去掉最前面的注释#,同时将值修改为False。具体操作见下图:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-3ecdeefd5f46a87c5f31a3e8_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&718& data-rawheight=&1278& data-watermark=&& data-original-src=&& data-watermark-src=&& data-private-watermark-src=&& class=&origin_image zh-lightbox-thumb& width=&718& data-original=&https://pic1.zhimg.com/v2-3ecdeefd5f46a87c5f31a3e8_r.jpg&&&/figure&&p&&b&第4步,删除缓存目录&/b&&/p&&p&在路径下(C:\Users\你的用户名\.matplotlib)找到一个叫\.matplotlib的文件夹,这是matplotlib的缓存目录,删除这个文件夹&/p&&p&&br&&/p&&p&&b&第5步,重启jupyter notebook&/b&&/p&&p&使修改的配置生效。就可以正常显示中文了。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-e5f9d667badb5bc5f5de0d20_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&718& data-rawheight=&1278& data-watermark=&& data-original-src=&& data-watermark-src=&& data-private-watermark-src=&& class=&origin_image zh-lightbox-thumb& width=&718& data-original=&https://pic1.zhimg.com/v2-e5f9d667badb5bc5f5de0d20_r.jpg&&&/figure&&p&&br&&/p&&a href=&https://www.zhihu.com/lives/994432& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic2.zhimg.com/bce97fd3748dddcf17dd05_ipico.jpg& data-image-width=&1242& data-image-height=&1242& class=&internal&&如何用Python绘图和制作数据分析报告?&/a&&p&&br&&/p&&a href=&https://zhuanlan.zhihu.com/p/& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic1.zhimg.com/v2-a9aec6f.jpg& data-image-width=&1285& data-image-height=&688& class=&internal&&Simon:Python绘图显示中文最简单的解决办法&/a&
下面这个解决方案可以解决中文乱码,但是每次都要附上这段代码,还是比较麻烦。有没有一劳永逸的解决办法呢?也就是设置一次以后,不需要添加任何代码,就可以解决这个问题。现在我给出就终结解决方案。首先,为什么会产生中文乱码?matplotlib 初始化时首…
&figure&&img src=&https://pic3.zhimg.com/v2-8601c99dcc4e589cdccfca0b52ce3125_b.jpg& data-rawwidth=&450& data-rawheight=&250& class=&origin_image zh-lightbox-thumb& width=&450& data-original=&https://pic3.zhimg.com/v2-8601c99dcc4e589cdccfca0b52ce3125_r.jpg&&&/figure&&p&&b&入门Python数据分析分3步就可以完成。&/b&&/p&&p&&b&第1步,基础入门&/b&&/p&&p&很多人喜欢搞一本厚厚的书来看,虽然看完了但是还不会用Python,这是最大的悲哀。&/p&&p&伤心吧?难过吧?&/p&&p&其实,你只需要,看菜鸟教程网站的这个教程就足够了,网站地址:&/p&&p&&a href=&https://link.zhihu.com/?target=http%3A//www.runoob.com/python/python-tutorial.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python 基础教程 | 菜鸟教程&/a&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-ccfb54c7aa03f05f7d1bf_b.jpg& data-rawwidth=&1123& data-rawheight=&442& class=&origin_image zh-lightbox-thumb& width=&1123& data-original=&https://pic2.zhimg.com/v2-ccfb54c7aa03f05f7d1bf_r.jpg&&&/figure&&p&上面的教程足够简单,我当时是用1周时间看完,就可以写代码做简单的数据分析了。当然,我是有R数据分析基础的,所以看起来会快些。没看懂,多看几次就会了。&br&&/p&&p&对数据结构不是很了解的,可以看我之前的知乎Live,有1200多人看了我的live学会了数据结构(我自豪呀)&/p&&p&&a href=&https://www.zhihu.com/lives/114816& class=&internal&&知乎live点我进入 《数据结构入门》&/a&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-f519c18cb2e139dd16a24_b.jpg& data-rawwidth=&600& data-rawheight=&279& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic3.zhimg.com/v2-f519c18cb2e139dd16a24_r.jpg&&&/figure&&p&&b&第2步:数据分析进阶&/b& &/p&&p&推荐一本书《利用Python进行数据分析》,这本书在豆瓣评分是8.5分。&/p&&p&有能力的尽量看以英文版,技术书翻译过来味道都变了。如果你是懒的找电子版,可以在我的微信公众号:猴子聊知识,中回复“资料”有电子版给你准备好了。(别叫我雷锋,因为我就是啦)&/p&&figure&&img src=&https://pic4.zhimg.com/v2-3a8adee4ac3e29_b.jpg& data-rawwidth=&604& data-rawheight=&245& class=&origin_image zh-lightbox-thumb& width=&604& data-original=&https://pic4.zhimg.com/v2-3a8adee4ac3e29_r.jpg&&&/figure&&p&当看到书里涉及到到统计概率知识看不懂的时候,这时候反过来再学习统计概率的知识。&/p&&p&很多人错误的学习方式是,先学习统计概率,再去学习数据分析编程工具(Excel,Python,R)。最后抱怨太难了,学不会。&/p&&p&这其实学习方法是错误的。这是为什么呢?&br&&/p&&p&有两个原因:&/p&&p&1)因为很多统计概率讲的都是复制的数学公式,却不讲统计概率在生活中如何应用的。这样造成的结果就是你学习了很多,但是也忘记了很多。&/p&&p&2)统计概率知识大多数时候是理论基础,如果不结合数据分析工具(Excel,Python,R)来使用,你肯定学不会。&/p&&p&比如你学习了四分位数的理论,但是如何在实际中使用的,你不会数据分析的工具,你当然不会用了。&/p&&p&但是如果你会数据分析的工具,实际操作就一行代码,四分位就计算出来了。你当然兴奋了,一高兴学习兴趣也就上来了。&br&&/p&&p&&br&&/p&&p&&b&所以,我的建议,也是正确的学习方式是:先学习基础的数据分析工具用法,当遇到统计概率知识的时候,再来补这个知识,边学习边用数据分析工具实现一遍。&/b&&/p&&p&&br&&/p&&p&&b&3. 数据分析高级-统计概率知识&/b&&/p&&p&&b&统计概率知识学习其实很简单,只是很多老师和书把这个东东讲复杂了。用一张图你就可以学会统计概率:&/b&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-d81ae41dccd95cece0ef_b.jpg& data-rawwidth=&540& data-rawheight=&930& class=&origin_image zh-lightbox-thumb& width=&540& data-original=&https://pic1.zhimg.com/v2-d81ae41dccd95cece0ef_r.jpg&&&/figure&&p&简单解释下,上面的图。&br&&/p&&p&如果你的学习目的是:提高认知,将统计概率应用在生活中,用于指导你面对重大决策时做出最好的选择,你的应该看《赤裸裸的统计学》这本书就够了。&/p&&p&如果你的学习目的是:学习大数据的基础知识:统计概率,希望成为数据分析师,实现升职加薪的目的,那你的学习参考书是《深入浅出统计学》或者《商务与经济统计》。&/p&&p&《深入浅出统计学》适合没有任何统计概率基础的人学习,这本书足够有趣和简单。&/p&&p&如果你之前上学学习过一些统计概率的课,但是最后还是把课堂学的内容还给了老师,你应该选择看《商务与经济统计》这本书来重新巩固你的基础知识。&/p&&p&这些书的电子版也放到我的微信公众号里了(对你就是这么好,么么哒)&/p&&p&&br&&/p&&p&&b&4. 学习遇到困难,去哪找帮助?&/b&&/p&&p&只要是学习就会遇到困难,遇到困难怎么办呢?&/p&&p&1)首先,你需要使用某搜索引擎查找问题(你知道我说的不是百度),一般都能查到你问题的答案。学会用英文搜索真的很重要。&/p&&p&2)利用某搜索引擎查不到答案的话,当然是找前辈们帮忙了。不过问了不一定有人回复,为了解决这个问题,我找来了我社群优秀会员和我的老铁朋友们,现在你可以向来自BAT的人提问了。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-2d2d2df7c0d2fd22581c5_b.jpg& data-rawwidth=&640& data-rawheight=&778& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic1.zhimg.com/v2-2d2d2df7c0d2fd22581c5_r.jpg&&&/figure&&p&&/p&&p&&/p&
入门Python数据分析分3步就可以完成。第1步,基础入门很多人喜欢搞一本厚厚的书来看,虽然看完了但是还不会用Python,这是最大的悲哀。伤心吧?难过吧?其实,你只需要,看菜鸟教程网站的这个教程就足够了,网站地址:上面的教程…
&p&写之前先让我吐槽一下,为什么我学个python这么难啊,基本上每天都来问题和错误,真想哭!吐槽好了就进入正文了:&/p&&p&当我们打开jupyter notebook时有时会出现下面这中问题,导致浏览器不能弹出:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-3df23f5b8e5edae0b54094_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&679& data-rawheight=&439& class=&origin_image zh-lightbox-thumb& width=&679& data-original=&https://pic3.zhimg.com/v2-3df23f5b8e5edae0b54094_r.jpg&&&/figure&&p&解决方法其实很简单而且上面也有提示:&/p&&p&1、这个方法就是可以将命令行中出现的URL地址复制、粘贴到浏览器中,就可以打开jupyter notebook ,在里面进行编辑。但是必须每次进入jupyter notebook都必须这样操作,因此这方法很繁琐。&/p&&p&2、要想解决问题,首先要明白问题出在哪里。其实出现这个原因是因为你没有指定一个浏览器来打开jupyter notebook,这就导致jupyter notebook不知如何进入网页,这种情况的出现一般因为电脑上存在两个浏览器导致的,所以只要把其中一个设为默认浏览器就可以了。&/p&&p&3、如果前面两步都没解决,可以参考一下,下面这个解决方法:&/p&&p&&a href=&https://link.zhihu.com/?target=http%3A//blog.csdn.net/chengshuhao1991/article/details/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Jupyter Notebook打开时报错的问题解决办法&/a&&/p&&p&第三种是我搜索到的答案,第二种是我结合第三种得出的答案,而且在我自己的电脑实践过,证明确实可行,第一种就是自己第一时间想到的可能最笨的方法了。&/p&&h2&&b&如果你有好的解决方法,希望可以告知我一下,若有好的网站,资料也请推荐一下,非常感谢。以内容仅供您的参考。&/b&&/h2&
写之前先让我吐槽一下,为什么我学个python这么难啊,基本上每天都来问题和错误,真想哭!吐槽好了就进入正文了:当我们打开jupyter notebook时有时会出现下面这中问题,导致浏览器不能弹出:解决方法其实很简单而且上面也有提示:1、这个方法就是可以将命令…
&p&我会从下面4个方面详细聊聊,记得实践每一步,你将不仅了解什么是Jupyter notebook,而且还能轻松使用这个神器。&/p&&p&&b&1.Jupyter notebook 是什么?&/b&&/p&&p&&b&2.如何安装 Jupyter notebook?&/b&&/p&&p&&b&3.如何启动Jupyter notebook?&/b&&/p&&p&&b&4.新手如何快速使用notebook?&/b&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-a3685a05ccd1b5395cdd_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&600& data-rawheight=&85& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic2.zhimg.com/v2-a3685a05ccd1b5395cdd_r.jpg&&&/figure&&p&&b&1.Jupyter notebook 是什么?&/b&&/p&&p&在没有notebook之前,在IT领域工作的我都是这样工作的:&/p&&p&在普通的 Python shell 或者在IDE(集成开发环境)如Pycharm中写代码,然后在word中写文档来说明你的项目。&/p&&p&这个过程很反锁,通常是写完代码,再写文档的时候我还的重头回顾一遍代码。最蛋疼的地方在于,有些数据分析的中间结果,我还的重新跑代码,然后把结果弄到文档里给客户看。&/p&&p&&br&&/p&&p&有了notebook之后,我的世界突然美好了许多,因为notebook 可以直接在代码旁写出叙述性文档,而不是另外编写单独的文档。也就是它可以能将代码、文档等这一切集中到一处,让用户一目了然。&/p&&p&例如,我的数据分析社群小伙伴就用Jupyter notebook写出了他的学习笔记,长这样,是不是很酷:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-a6ac6b5664eca9f16eba4cebc39bf3e8_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&688& data-rawheight=&401& class=&origin_image zh-lightbox-thumb& width=&688& data-original=&https://pic1.zhimg.com/v2-a6ac6b5664eca9f16eba4cebc39bf3e8_r.jpg&&&/figure&&p&所以,你现在明白了这句话是在说什么了:&/p&&blockquote&Jupyter notebook(&a href=&//link.zhihu.com/?target=http%3A//jupyter.org/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&jupyter.org/&/span&&span class=&invisible&&&/span&&/a&) 是一种 Web 应用,能让用户将说明文本、数学方程、代码和可视化内容全部组合到一个易于共享的文档中。&/blockquote&&figure&&img src=&https://pic2.zhimg.com/v2-8ac2d9d32e996face92fcad_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&646& data-rawheight=&413& class=&origin_image zh-lightbox-thumb& width=&646& data-original=&https://pic2.zhimg.com/v2-8ac2d9d32e996face92fcad_r.jpg&&&/figure&&p&&b&Jupyter Notebook 已迅速成为数据分析,机器学习的必备工具。因为它可以让数据分析师集中精力向用户解释整个分析过程。&/b&&/p&&p&&br&&/p&&p&Jupyter这个名字是它要服务的三种语言的缩写:Julia,PYThon和R,这个名字与“木星(jupiter)”谐音。&/p&&p&&br&&/p&&p&如果看了以上对Jupyter Notebook的介绍你还是拿不定主意究竟是否适合你,那么不要担心,你可以先&b&免安装试用体验&/b&一下,&a href=&//link.zhihu.com/?target=https%3A//try.jupyter.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&戳这里&/a&,然后再做决定。(感谢 &a class=&member_mention& href=&//www.zhihu.com/people/e7c2d130df5eb242baad09& data-hash=&e7c2d130df5eb242baad09& data-hovercard=&p$b$e7c2d130df5eb242baad09&&@豆豆&/a& 提供的试用经验)&/p&&p&值得注意的是,官方提供的同时试用是有限的,如果你点击链接之后进入的页面如下图所示,那么不要着急,过会儿再试试看吧。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-b33ebefcafdf942_b.jpg& data-size=&normal& data-rawwidth=&1436& data-rawheight=&618& class=&origin_image zh-lightbox-thumb& width=&1436& data-original=&https://pic3.zhimg.com/v2-b33ebefcafdf942_r.jpg&&&figcaption&试用满线&/figcaption&&/figure&&p&如果你足够幸运,那么你将看到如下界面,就可以开始体验啦。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-d07ddde1d96cd3a71a5ecffe_b.jpg& data-size=&normal& data-rawwidth=&2332& data-rawheight=&1378& class=&origin_image zh-lightbox-thumb& width=&2332& data-original=&https://pic3.zhimg.com/v2-d07ddde1d96cd3a71a5ecffe_r.jpg&&&figcaption&主界面&/figcaption&&/figure&&figure&&img src=&https://pic2.zhimg.com/v2-8fa489d28f5c0aa29e78dc_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&2004& data-rawheight=&1774& class=&origin_image zh-lightbox-thumb& width=&2004& data-original=&https://pic2.zhimg.com/v2-8fa489d28f5c0aa29e78dc_r.jpg&&&/figure&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-a3685a05ccd1b5395cdd_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&600& data-rawheight=&85& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic2.zhimg.com/v2-a3685a05ccd1b5395cdd_r.jpg&&&/figure&&p&&b&2.如何安装 Jupyter notebook?&/b&&/p&&p&对于做数据分析这么有用的神器,不安装使用下是不是很遗憾?&/p&&p&安装 Jupyter 的最简单方法是使用 Anaconda。该发行版附带了 Jupyter notebook。你能够在默认环境下使用 notebook。&/p&&p&确保你已经安装了Anaconda,如果不知道如何安装的,可以看我之前写的:&/p&&a href=&https://www.zhihu.com/question//answer/& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic1.zhimg.com/80/v2-2c005cd28ab50cd710e9fbb20610bc94_ipico.jpg& data-image-width=&1242& data-image-height=&1491& class=&internal&&初学python者自学anaconda的正确姿势是什么??&/a&&p&要在 conda 环境中安装 Jupyter notebook,在conda终端使用命令(&b&以下所有命令是指conda的终端Anaconda Prompt&/b&):&/p&&blockquote&conda install jupyter notebook&/blockquote&&figure&&img src=&https://pic3.zhimg.com/v2-f070fd2c610f2127cd1e_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&621& data-rawheight=&173& class=&origin_image zh-lightbox-thumb& width=&621& data-original=&https://pic3.zhimg.com/v2-f070fd2c610f2127cd1e_r.jpg&&&/figure&&p&也可以通过python shell的 pip 来安装:pip install jupyter notebook。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-a3685a05ccd1b5395cdd_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&600& data-rawheight=&85& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic2.zhimg.com/v2-a3685a05ccd1b5395cdd_r.jpg&&&/figure&&p&&b&3.如何启动Jupyter notebook?&/b&&/p&&p&启动 notebook 服务器,在终端中输入: jupyter notebook。&/p&&p&服务器会在你运行此命令的“notebook工作文件夹”中启动。也就是说后面你操作的任何 notebook 文件都会保存在该文件夹下,类似于你用优酷下载视频,优酷都会放到自己的下载目录一样。例如我在下面的C:\houzi 下面启动目录后,会在该目录下看到我后面运行的文件。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-acf8d5efb7affa8_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&617& data-rawheight=&128& class=&origin_image zh-lightbox-thumb& width=&617& data-original=&https://pic1.zhimg.com/v2-acf8d5efb7affa8_r.jpg&&&/figure&&p&启动notebook 服务器后,在浏览器中打开notebook页面地址:http://localhost:8888 &/p&&p&(其中localhost 表示你的计算机,而 8888 是服务器的默认端口)&/p&&figure&&img src=&https://pic4.zhimg.com/v2-afae6b814f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&617& data-rawheight=&225& class=&origin_image zh-lightbox-thumb& width=&617& data-original=&https://pic4.zhimg.com/v2-afae6b814f_r.jpg&&&/figure&&p&如果你同时启动了另一个 notebook 服务器,新服务器会尝试使用端口 8888,但由于此端口已被占用,因此新服务器会在端口 8889 上运行。之后,你可以通过 http://localhost:8889 连接到新服务器。以此类推。&/p&&p&&br&&/p&&p&如果启动后遇到问题,参考这里的解决方案:&/p&&a href=&https://zhuanlan.zhihu.com/p/& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic2.zhimg.com/v2-4c9ebfce283b5_180x120.jpg& data-image-width=&500& data-image-height=&275& class=&internal&&猴子:jupyter notebook常见问题解决办法&/a&&figure&&img src=&https://pic3.zhimg.com/v2-cd22b307ea8b1d507ec3e_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&600& data-rawheight=&85& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic3.zhimg.com/v2-cd22b307ea8b1d507ec3e_r.jpg&&&/figure&&p&&b&4.新手如何快速使用notebook?&/b&&/p&&p&&b&1)确保你在Anaconda终端中安装了以下包:&/b&&/p&&ul&&li&&b&安装环境自动关联包&/b&&/li&&/ul&&div class=&highlight&&&pre&&code class=&language-text&&conda install nb_conda
&/code&&/pre&&/div&&p&该包可以将conda中创建的环境自动关联到你的notebook中。&/p&&p&我们可以对应conda中的环境,就知道这些环境对应conda中的环境列表。用 conda env list 就可以列出你创建的所有环境。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-320fb168b9f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&501& data-rawheight=&158& class=&origin_image zh-lightbox-thumb& width=&501& data-original=&https://pic3.zhimg.com/v2-320fb168b9f_r.jpg&&&/figure&&p&其中py2是我在conda中创建的Python2环境名称,&br&root和default一样是默认环境,因为我安装的是Anaconda3,所以默认环境是Python3。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-e2dfecb6fae_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1242& data-rawheight=&1772& class=&origin_image zh-lightbox-thumb& width=&1242& data-original=&https://pic3.zhimg.com/v2-e2dfecb6fae_r.jpg&&&/figure&&p&你会发现环境名称py3没有出现在notebook中。解决办法是按下图步骤安装包ipykernel。&/p&&p&(同样的,在你的py2环境下也要像刚才步骤那样安装一次这个包)&/p&&figure&&img src=&https://pic2.zhimg.com/v2-c8bf828cdf1eed2a0a6c194f67ac7989_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&919& data-rawheight=&512& class=&origin_image zh-lightbox-thumb& width=&919& data-original=&https://pic2.zhimg.com/v2-c8bf828cdf1eed2a0a6c194f67ac7989_r.jpg&&&/figure&&p&完成上面安装步骤,回到标签页“Files”,再新建notebook时,会发现已经关联了环境名称py2和py3:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-99b85f73de01e483e0e433ae80b01543_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1151& data-rawheight=&372& class=&origin_image zh-lightbox-thumb& width=&1151& data-original=&https://pic4.zhimg.com/v2-99b85f73de01e483e0e433ae80b01543_r.jpg&&&/figure&&p&这样你在notebook中可以轻松切换Python2和Python3环境了。&/p&&p&ps:感谢 &a class=&member_mention& href=&//www.zhihu.com/people/fde130defcd345df67e96f& data-hash=&fde130defcd345df67e96f& data-hovercard=&p$b$fde130defcd345df67e96f&&@倪琪琪&/a& 的经验分享:&/p&&p&经过上面步骤后,notebook的首页右上角,在新建的时候没有显示py3和py2两个环境的关联,这个时候,你可以尝试重启浏览器,注意!是重启浏览器,不是notebook!刷新浏览器有时候是没有用滴(因为缓存的原因),而然我刷了两个小时。。。&/p&&p&&br&&/p&&ul&&li&&b&在Anaconda终端安装代码自动补全包&/b&&/li&&/ul&&div class=&highlight&&&pre&&code class=&language-text&&conda install pyreadline
&/code&&/pre&&/div&&figure&&img src=&https://pic1.zhimg.com/v2-c78b6f2efec81509d97c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&668& data-rawheight=&274& class=&origin_image zh-lightbox-thumb& width=&668& data-original=&https://pic1.zhimg.com/v2-c78b6f2efec81509d97c_r.jpg&&&/figure&&p&什么是代码自动补全呢?&/p&&p&后面会介绍,您就等好吧。&/p&&p&&br&&/p&&p&&b&1)顶部的3个选项卡&/b&&/p&&p&顶部的3个选项卡是:&i&Files&/i&(文件)、&i&Running&/i&(运行)和 &i&Cluster&/i&(集群)。&/p&&p&&i&Files&/i&(文件)显示当前“notebook工作文件夹”中的所有文件和文件夹。&/p&&p&点击 &i&Running&/i&(运行)选项卡会列出所有正在运行的 notebook。可以在该选项卡中管理这些 notebook。&/p&&p&&i&Clusters一般不会用到。因为&/i&过去在 &i&Clusters&/i&(集群)中创建多个用于并行计算的内核。现在,这项工作已经由 &a href=&//link.zhihu.com/?target=https%3A//ipyparallel.readthedocs.io/en/latest/intro.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ipyparallel&/a& 接管。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-12f44fe33ecd2e3cfbc6d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&620& data-rawheight=&233& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&https://pic2.zhimg.com/v2-12f44fe33ecd2e3cfbc6d_r.jpg&&&/figure&&p&&br&&/p&&p&&b&2)如何创建一个新的notebook?&/b&&/p&&p&像下面图片中一样,在右侧点击“New”(新建),创建新的 notebook、文本文件、文件夹或终端。&/p&&p&“Notebooks”下的列表显示了你已安装的内核。由于我在 Python 3 环境中运行服务器,因此列出了 Python 3 内核。你在这里看到的可能是 Python 2。这里我点击Python3。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-8b121c76186adebffdbabc82_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&617& data-rawheight=&354& class=&origin_image zh-lightbox-thumb& width=&617& data-original=&https://pic3.zhimg.com/v2-8b121c76186adebffdbabc82_r.jpg&&&/figure&&p&&b&这样你就打开了下面的页面,你会看到外框为绿色的一个小方框。它称为&i&单元格&/i&。单元格是你编写和运行代码的地方。以后你就可以在这里写你的数据分析代码了。&/b&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-feab80e970e3e1649f0d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&615& data-rawheight=&254& class=&origin_image zh-lightbox-thumb& width=&615& data-original=&https://pic2.zhimg.com/v2-feab80e970e3e1649f0d_r.jpg&&&/figure&&p&在这里你可以输入自己人生中的第一行Python代码Hello world。然后点击图中的运行按钮,会执行你当前所在的代码,其实我更喜欢用快捷键(键盘上同时按住ctrl+enter键)来执行代码。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-4b6e97bdccc8f7c6aa63c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&695& data-rawheight=&392& class=&origin_image zh-lightbox-thumb& width=&695& data-original=&https://pic1.zhimg.com/v2-4b6e97bdccc8f7c6aa63c_r.jpg&&&/figure&&p&&br&&/p&&p&这句代码的意思是在界面输出字符串&Hello world!&,所以你会看到在下面与输出结果出来。&/p&&p&运行代码单元格时,单元格下方会显示输出。单元格还会被编号(左侧会显示 In [1]:)。如果运行了多个单元格的话(也就是多块代码),这能让你知道运行的代码和运行顺序。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-f53feac0a3aa_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&612& data-rawheight=&257& class=&origin_image zh-lightbox-thumb& width=&612& data-original=&https://pic1.zhimg.com/v2-f53feac0a3aa_r.jpg&&&/figure&&p&notebook 中的大部分工作均在代码单元格中完成。这是编写和执行代码的地方。在代码单元格中可以执行多种操作,例如编写代码、给变量赋值、导入包,展示数据分析结果等。在一个单元格中执行的任何代码在所有其他单元格中均可用。&/p&&p&+ 按钮用于创建新的单元格&/p&&figure&&img src=&https://pic2.zhimg.com/v2-f81fd1cea118a2feabdc977e221f3091_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&695& data-rawheight=&493& class=&origin_image zh-lightbox-thumb& width=&695& data-original=&https://pic2.zhimg.com/v2-f81fd1cea118a2feabdc977e221f3091_r.jpg&&&/figure&&p&&br&&/p&&p&还记得一开始我提到代码自动补全功能吗?那么,什么是代码自动补全呢?&/p&&p&比如 我定义了下面的变量。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-c85acc44ab71c88cc6c705f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&499& data-rawheight=&107& class=&origin_image zh-lightbox-thumb& width=&499& data-original=&https://pic4.zhimg.com/v2-c85acc44ab71c88cc6c705f_r.jpg&&&/figure&&p&在后面代码中用到这个变量是,我只要输入第一个变量的第一个字母p,然后按下Tab键,边会自动查找到代码中以p开头的变量名称,这可以大幅度提供你写代码的效率。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-1d768e1f5a5ec846a4dc_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&364& data-rawheight=&116& class=&content_image& width=&364&&&/figure&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-a407fc1a30feae6d5bf02afb0661311c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1242& data-rawheight=&1581& class=&origin_image zh-lightbox-thumb& width=&1242& data-original=&https://pic1.zhimg.com/v2-a407fc1a30feae6d5bf02afb0661311c_r.jpg&&&/figure&&p&但是要注意:如果你定义的变量想出现在代码补全里,需要你先把定义该变量的cell运行以后,notebook才能识别它。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-32ff5adc5bc9fc1741fdda_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1242& data-rawheight=&1907& class=&origin_image zh-lightbox-thumb& width=&1242& data-original=&https://pic3.zhimg.com/v2-32ff5adc5bc9fc1741fdda_r.jpg&&&/figure&&p&当Cell前出现*,表示当前cell程序正在运行,或者它前面的cell正在运行。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-deaec08a3c455_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&338& data-rawheight=&290& class=&content_image& width=&338&&&/figure&&figure&&img src=&https://pic4.zhimg.com/v2-174803fee9b3f5536f4f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1242& data-rawheight=&1924& class=&origin_image zh-lightbox-thumb& width=&1242& data-original=&https://pic4.zhimg.com/v2-174803fee9b3f5536f4f_r.jpg&&&/figure&&p&&b&2)重命名notebook&/b&&/p&&p&你会看到刚才我建的notebook文件名是下面这样默认的,我想修改成自己喜欢的文件名如何办呢?&/p&&figure&&img src=&https://pic4.zhimg.com/v2-f0bc10aa340f1fdc7b38e3_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&611& data-rawheight=&248& class=&origin_image zh-lightbox-thumb& width=&611& data-original=&https://pic4.zhimg.com/v2-f0bc10aa340f1fdc7b38e3_r.jpg&&&/figure&&p&点击“File”-&Rename,可以对notebook文件进行重命名,这里我命名成‘Helloworld’&/p&&figure&&img src=&https://pic1.zhimg.com/v2-90ccfe443cc_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&615& data-rawheight=&432& class=&origin_image zh-lightbox-thumb& width=&615& data-original=&https://pic1.zhimg.com/v2-90ccfe443cc_r.jpg&&&/figure&&figure&&img src=&https://pic4.zhimg.com/v2-50ab0efe7_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&612& data-rawheight=&280& class=&origin_image zh-lightbox-thumb& width=&612& data-original=&https://pic4.zhimg.c}

我要回帖

更多关于 www.33hei.com 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信