Python3学习
Fitz1318
安全运维工程师,加油!...
展开
-
在python中MongoDB变量传参给查询条件的实现
在python中MongoDB变量传参给查询条件的实现最近遇到一个问题,需要动态查询用户指定的时间和领域,原先写死的查询方式肯定是不行了。所以找出了一个方法进行动态传参给查询条件。下面简单记录一下直接上代码client = MongoClient(host="mongodb://192.168.6.167:27017/?readPreference=primary&appname=MongoDB%20Compass&ssl=false")dbList = client.list_da原创 2022-03-15 10:48:38 · 1635 阅读 · 0 评论 -
enumerate使用方法
enumerate使用方法enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中举个例子seq = ['one', 'two', 'three']for i, element in enumerate(seq): print(i, element) 结果是0 one1 two2 three...原创 2022-03-09 16:02:34 · 505 阅读 · 0 评论 -
python将英语中的复数名词变成单数名词
python将英语中的复数名词变成单数名词英语复数名词的常见构成方式元音字母和大多数除s,z,x,sh,ch之外的辅音字母(或字母组合)直接加-s,清辅音后的s读作/s/ ,元音和浊辅音后的s读作/z/。如:bag-bags,biscuit-biscuits,egg-eggs.当单数名词结尾为se,ze,ge,ce时(其词尾辅音为/s,z,ʃ,ʒ/等),加s后读作/iz/如vase-vases,fridge-fridges当单数名词结尾为s,z,x,sh,软音ch时(其词尾辅音为/s,z,原创 2022-03-04 15:23:02 · 2390 阅读 · 0 评论 -
python实现两个字典相加
python实现两个字典相加最近遇到了需要字典相加的操作,其中这分为两种。如下面例子所示第一种是键相同的保持第一个字典中的值,键不同的直接添加到新字典中例如dict1 = {'a': 1, 'b': 2}dict2 = {'a': 2, 'c': 3}Out: {'a': 1, 'b': 2, 'c': 3}这种实现方式为dict1 = {'a': 1, 'b': 2}dict2 = {'a': 2, 'c': 3}print({**dict1, **dict2})还有一种就是如果遇原创 2021-12-07 17:14:03 · 14279 阅读 · 1 评论 -
python实现读取文件的指定某行内容
python实现读取文件的指定某行内容最近有一个需求就是读取一个文件中的指定某行的内容,现将方法记录如下import linecache# 这里填写你自己的文件位置和行号text = linecache.getline("../TestFile/test_C1.json", 2)print(text)...原创 2021-12-07 17:13:30 · 3320 阅读 · 0 评论 -
在Pycharm中使用国内镜像安装python依赖包
在Pycharm中使用国内镜像安装python依赖包最近在复现一些实验时总是遇到虚拟环境中安装python依赖包失败的问题,错误如下图所示,经过查看细节就发现是pandas依赖包下载超时,在这里记录一下解决依赖包安装失败的方法首先点击Terminal进入终端然后依次输入命令,结果如下图所示,我们就很轻易的安装好了pandas这个依赖包,对于其他的依赖包也可以用这种方式安装,不仅安装成功,而且更快cd venvcd Scriptspip install -i https://pypi.douban原创 2021-11-01 20:21:18 · 529 阅读 · 0 评论 -
Python解决`ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88
Python解决ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 from PyObject错误的方法最近运行一个python程序时遇到以下错误经过上网查找资料发现时numpy的版本问题,出错时numpy版本是1.19.5,在最新版本的numpy中已经解决了这个问题,所以最终解决方案就是pip unistall numpypip原创 2021-06-20 20:20:24 · 44924 阅读 · 13 评论 -
matplotlib.pyplot画图时解决中文乱码问题
matplotlib.pyplot画图时解决中文乱码问题plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = False原创 2021-05-31 21:54:15 · 349 阅读 · 0 评论 -
python pip安装时使用国内镜像源,急速提升下载速度
python pip安装时使用国内镜像源,急速提升下载速度。例如安装sklearn只需要使用 pip install -i https://pypi.doubanio.com/simple/ sklearn常用的源包括豆瓣 https://pypi.doubanio.com/simple/网易 https://mirrors.163.com/pypi/simple/阿里云 https://mirrors.aliyun.com/pypi/simple/腾讯云 https://mirrors.cl原创 2020-09-16 20:24:36 · 566 阅读 · 0 评论 -
Navicat Premium 12.1.11.0安装与激活
本文转载自https://www.jianshu.com/p/5f693b4c9468?mType=Group最近突然发现Navicat Premium支持MongoDB了,真开心。PS:最关键的就是注册机的版本,一定要去找到最新的注册机版本才能激活最新的Navicat Premium.本文介绍Navicat Premium 12.1.11.0的安装、激活与基本使用。博主所提供的激活文件理...转载 2019-01-10 13:22:11 · 2686 阅读 · 0 评论 -
Python 获得13位unix时间戳
定义:时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。时间戳(timestamp),通常是一个字符序列,唯一地标识某一刻的时间。 import time now = time.time() # 1s = 1000ms now = (int(now * 1000)) # 获得13位时间戳...原创 2018-05-02 18:09:37 · 5368 阅读 · 0 评论 -
scrapy爬取新浪微博并存入MongoDB中
spider.pyimport jsonfrom scrapy import Request, Spiderfrom weibo.items import *class WeiboSpider(Spider): name = 'weibocn' allowed_domains = ['m.weibo.cn'] user_url = 'htt...原创 2018-04-04 08:15:35 · 868 阅读 · 1 评论 -
MongoDB特定服务错误代码100
最近想了解一下关于MongoDB的知识,记得之前电脑上安装的MongoDB也能正常启用,可是这次在使用mongodb,却遇到一下小麻烦啊。mongodb无法启动,小编很苦恼,尝试了各种方法,甚至卸载重新安装都解决不了,无奈既然要历练我,那就迎接吧。 先说这个错误造成的原因:使用bat配置可以启动,就是以下这种方式>C:>cd c:\MongoDB\Server\bin>mongod –dbpa转载 2018-04-03 09:48:43 · 626 阅读 · 0 评论 -
MongoDB下载与安装
一、先登录Mongodb官网https://www.mongodb.com/download-center#community 下载 安装包。32、64位的都行。二、安装MongoDB下载后的安装包:安装比较简单,类似于普通QQ软件,中间主要是选择“Custom”自定义 安装路径修改下:D:\software\MongoDB然后不断“下一步”,安装至结束。安装比较容易。难点在启动Mongo转载 2018-04-03 09:46:36 · 5940 阅读 · 0 评论 -
基于scrapy的分布式爬虫抓取新浪微博个人信息和微博内容存入MySQL
为了学习机器学习深度学习和文本挖掘方面的知识,需要获取一定的数据,新浪微博的大量数据可以作为此次研究历程的对象一、环境准备python 2.7 scrapy框架的部署(可以查看上一篇博客的简要操作,传送门:点击打开链接)mysql的部署(需要的资源百度网盘链接:点击打开链接)heidiSQL数据库可视化本人的系统环境是 win 64位的 所以以上环境都是需要兼容64位的二、scrapy组件转载 2018-03-13 10:35:48 · 1225 阅读 · 0 评论 -
设置随机更换ip
# encoding: utf-8import reimport requestsfrom scrapy.selector import Selectorimport MySQLdbconn = MySQLdb.connect( host="localhost", port=3306, user="root", passwd="1234", db...原创 2018-03-13 10:16:56 · 1699 阅读 · 0 评论 -
爬取西刺ip的插入数据库相关问题
今晚解决了前几天爬取西刺ip网不能插入数据库的问题,成功爬取并插入数据库的代码如下# encoding: utf-8import reimport requestsfrom scrapy.selector import Selectorimport MySQLdbconn = MySQLdb.connect( host="localhost", #port=3306,...原创 2018-03-12 20:31:01 · 301 阅读 · 0 评论 -
使用selenium模拟登录新浪微博
首先还是照常分析用户名、密码和登录的CSS,如下图在新浪微博的登录时一定要注意sleep一下,等他的JS加载完。对所有异步加载的网站,在登陆时都得这样。import timefrom selenium import webdriverbrowser=webdriver.Chrome(executable_path="C:/Users/Fitz/Desktop/software/chromedr...原创 2018-03-11 10:19:53 · 2111 阅读 · 1 评论 -
Python进行MySQL数据库操作
最近开始玩Python,慢慢开始喜欢上它了,以前都是用shell来实现一些自动化或者监控的操作,现在用Python来实现,感觉更棒,Python是一门很强大的面向对象语言,所以作为一个运维DBA或者运维来说,都应该学会用Python来提高工作效率。下面简单的介绍一下Python DB API MySQLdb 使用Python DB API访问数据库的流程图: 在Centos下安装MySQL转载 2018-03-07 09:48:22 · 598 阅读 · 0 评论 -
爬取西刺网实现ip代理池
使用ip代理服务器可以防止在爬虫时被封本机ip。国内免费的高匿代理可以选择西刺网总体目标是写一个爬虫,将这些字段保存在数据库中,然后筛选速度快的作为代理服务器,实现ip代理池。在这里使用requests库来实现。代码如下import requestsdef crawl_ips(): #爬取西刺的免费高匿IP代理 headers = {"User-Agent":"Mozilla/5...原创 2018-03-07 09:34:32 · 4048 阅读 · 2 评论 -
通过downloadmiddleware随机更换user-agent
首先来看scrapy的架构图。middleware是全局的。scrapy的默认User-agent是scrapy,如下图所示这种用户代理很容易被服务端识别出来,然后封杀掉。官方文档提供这种方式来取消掉默认user-agent。接下来就是定义自己的middleware,根据官方文档,需要重载以下三个函数。Github上有一个fake-useragent项目。middleware.py# -*- co...原创 2018-03-06 11:38:26 · 1304 阅读 · 0 评论 -
拉勾网职位信息入库
lagou.py# -*- coding: utf-8 -*-import scrapyfrom scrapy.linkextractors import LinkExtractorfrom scrapy.spiders import CrawlSpider, Rulefrom ArticleSpider.items import LagouJobItemLoader, LagouJob...原创 2018-03-05 22:21:19 · 999 阅读 · 0 评论 -
拉勾网登录问题
拉钩登录问题,在参考别人的博客后,解决啦class lagouSpider(CrawlSpider): name = 'lagou' allowed_domains = ['www.lagou.com'] start_urls = ['https://www.lagou.com/'] agent = "Mozilla/5.0 (Windows NT 10.0; WO...原创 2018-03-01 10:36:27 · 3746 阅读 · 0 评论 -
创建crawlspider时出现的问题
在使用scrapy genspider -t crawl lagou www.lagou.com创建一个crawlspider时出现下面这种importError。找到出错位置,即下图这出错了。解决方案有两种,最简单的就是添加好完整路径。还有一种就是在settings中设置好...原创 2018-03-01 08:39:48 · 843 阅读 · 0 评论 -
爬虫拉勾网职位的数据表设计
下图就是拉钩职位的关键字段,所以设计一个数据表保存这些数据。具体设计字段如下图,明天开始进行爬取原创 2018-02-28 23:24:29 · 599 阅读 · 0 评论 -
使用scrapy爬取知乎问题和答案的相关字段完整代码
目前程序健壮性有待提高。尤其是对question的各类异常处理还不够。但是代码已经可用,附上代码运行后爬取到的数据。在爬取到101条quetion时已经爬取到2671条answer字段了。。。。这差距好大。一方面是因为answer有知乎提供的API,更方便爬取,另一个方面就是question的好多异常情况我没有处理,碰到这些异常时就不会写入数据库。这是我今后需要思考,提高的方向。暂时就这样子。ma...原创 2018-02-13 22:03:20 · 1962 阅读 · 0 评论 -
处理爬取知乎问题时的一些异常
在这三个地方打断点,尤其是failure这打断点特别重要,会告诉我们错误信息。调试了一会,我发现question中有一种情况是只提出问题,没有对这个问题进行描述,就是content为空这种情况。例如下图这种看了下自己content的css选择器,再打开web调试器,搜索一下,发现如下图这个css还可以用,只是内容为空。所以也就比较方便处理这个异常。我在item.py中定义一个处理None的函数,如...原创 2018-02-13 21:53:33 · 1625 阅读 · 0 评论 -
爬取知乎question时遇到了问题
经过前几天的学习,知乎爬虫的逻辑已经实现。代码如下zhihu.py# -*- coding: utf-8 -*-import reimport jsonimport datetimetry: import urlparse as parseexcept: from urllib import parseimport scrapyfrom scrapy.loade...原创 2018-02-13 10:41:35 · 1798 阅读 · 0 评论 -
在保存数据到mysql中的一点小麻烦
现在要保存知乎的数据到mysql中,就意味着要重写pipeline来处理所有的item,或者每个网站各有一个pipeline,但是这样子如果有上百个网站,就得写对应数量的pipeline,要向mysql发出上百个连接,显然不合理。并且在同一个twistedpipeline中,只有插入语句是变化的,所以根据不同的item,构建不同的sql语句并插入到mysql中。参考别人的做法,仿照Django中的...原创 2018-02-11 22:08:20 · 637 阅读 · 0 评论 -
知乎爬虫逻辑的实现以及answer的提取
打开上一篇分析过的answer接口的json文件这样子我们就可以很方便的提取出answer中的具体字段。如下 def parse_answer(self, reponse): #处理questiona的answer ans_json = json.loads(reponse.text) is_end = ans_json["paging"]["...原创 2018-02-11 20:56:01 · 1789 阅读 · 0 评论 -
item loader方式提取知乎question
首先获取问题url,如图。发现url是在a标签下的href,所以使用css选择器即可得到。但是在这里,看到后面的url并不是完整的url,缺少主域名,这时就要用到urllib中的parse,将主域名与上述url连接起来。做个测试,发现可以。如下图但是为了防止爬到javascript,还是需要对url做过滤,使用filter.代码如下在这么多url中,我只对问题url感兴趣,所以要做正则表达式的匹配...原创 2018-02-11 17:58:31 · 494 阅读 · 0 评论 -
知乎分析以及数据表的设计
打开知乎,随便点击一片文章,发现下列这些数字。那么如何爬取呢?知乎提供了一个API,点击查看全部回答在点击前,我们先打开WEB-IDE,选择网络。然后点击查看全部回答,注意观察网络。如下图所示。复制这个请求网址并打开。发现如下接下来就设计我所需要的数据库,注意建立数据库时要注意字符集和排序规则,为了显示中文,应该如下图一样接下来就是设计问题表,和回答表,字段如下。...原创 2018-02-11 14:59:05 · 4100 阅读 · 0 评论 -
知乎网问题和答案爬取
本文转载自https://www.jianshu.com/p/7e31c1cbfa6f三、知乎网问题和答案爬取1. 基础知识session和cookie机制cookie:浏览器支持的存储方式key-valuehttp无状态请求,两次请求没有联系<img src=”http://upload-images.jianshu.io/upload_images/1779926-f01f9c33e57转载 2018-02-11 13:07:12 · 4621 阅读 · 1 评论 -
selenium模拟登录知乎
Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测...原创 2018-02-09 15:41:07 · 1872 阅读 · 1 评论 -
HTTP状态码
201-206都表示服务器成功处理了请求的状态代码,说明网页可以正常访问。 200(成功) 服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。 201(已创建) 请求成功且服务器已创建了新的资源。 202(已接受) 服务器已接受了请求,但尚未对其进行处理。 203(非授权信息) 服务器已成功处理了请求,但返回了可能来自另...原创 2018-02-09 10:55:14 · 464 阅读 · 0 评论 -
通过自定义pipeline保存数据到mysql
首先安装mysqlclient包,推荐使用豆瓣源安装,速度不仅快,还不容易出错。pip install -i https://pypi.douban.com/simple/ mysqlclient# -*- coding: utf-8 -*-# Define your item pipelines here## Don't forget to add your pipeline原创 2018-02-02 20:29:23 · 1920 阅读 · 0 评论 -
设计数据表保存爬去的数据
设计数据表时,发现自己前面的create_date所保存的时间是字符串模式,所以应该转变成date。于是对spider的create_date进行修改。打了断点,debug。create_date已经变成date类型。数据表设计如下图原创 2018-01-30 17:15:51 · 271 阅读 · 0 评论 -
如何将Item保存成json文件
现在只是学到这么写,为什么这样写还得继续学习方法一,在pipelines.py中自定义的自己的json类class JsonWithEncodingPipeline(object): def __init__(self): self.file = codecs.open('article.json', 'w', encoding="utf-8") def原创 2018-01-30 15:57:36 · 2734 阅读 · 1 评论 -
爬取伯乐在线文章中的封面图并保存在本地
首先还是和以往一样,分析页面源代码。不再说具体过程。图片保存在本地,所以要新建一个文件夹images同时也要修改settings中的内容。最好使用相对路径来保存,这样子代码移植到别的机器上无需修改路径就可以直接运行。这就需要用到os模块。具体代码如下。整个过程代码如下。Jobbole.py# -*- coding: utf-8 -*-import scrapyimpor原创 2018-01-29 21:49:40 · 379 阅读 · 0 评论 -
Item详解
本文转载自http://blog.csdn.net/sdulsj/article/details/52984619Item是保存结构数据的地方,Scrapy可以将解析结果以字典形式返回,但是Python中字典缺少结构,在大型爬虫系统中很不方便。Item提供了类字典的API,并且可以很方便的声明字段,很多Scrapy组件可以利用Item的其他信息。定义Item定义Item非常简单,只需要转载 2018-01-29 20:48:35 · 5352 阅读 · 1 评论