专业需求分析软件重现

1 配置环境

1 conda创建python虚拟环境
conda常用的命令:
conda list 查看安装了哪些包。
conda env list 或 conda info -e 查看当前存在哪些虚拟环境
conda update conda 检查更新当前conda

创建虚拟环境

conda create -n xxx python=3.6

激活虚拟环境

python --version  # 可以检查当前python的版本
Linux:  source activate your_env_name(虚拟环境名称)
Windows: activate your_env_name(虚拟环境名称)

对虚拟环境安装额外的包

conda install -n your_env_name [package]

关闭虚拟环境

Linux: source deactivate
​
Windows: deactivate

删除虚拟环境

conda remove -n your_env_name(虚拟环境名称) --all
conda remove --name your_env_name  package_name  # 删除环境中的某个包
2 使用conda虚拟环境下的pip安装包
conda install pysocks

所以在 conda中使用 pip需要先开启虚拟环境,并确保该虚拟环境安装了 pip、pysocks包,如果没有安装这两个包,请使用 conda命令安装。
参考文章在 conda 某个特定的虚拟环境中使用 pip 安装包问题

在使用国内源安装包时,我建议使用这种比较麻烦的方式:
pip install -i https://pypi.douban.com/simple/ xxx

3 安装mongodb软件

自行百度安装即可。
其中,假设安装的位置在 : P:\mongo,bin目录下的内容如下。
在这里插入图片描述
接着,将mongod.exe所在的目录路径(P:\mongo\bin)编辑到环境变量的Path中,以便于开启mongodb服务时,在cmd中方便调用。

4 开启mongo服务

打开CMD窗口,用于开启服务:mongod --dbpath P:\mongo\database\data\db 。该窗口需要一直开启,不能关闭。这里需要注意,这行命令顺利执行的前提是,db文件夹必须已经被创建
其次,如果需要在cmd中对数据库进行查看,删除等操作,需要再开启一个窗口:输入命令:mongo 即可。

2 Pycharm的快捷操作

1 全文查询关键词
ctrl + shift + F

2 当前页面替换
Ctrl + R

3 项目的知识点

1 访问测试与内容爬取任务尽可能分开
也就是说:
第一步,列表页可以访问到测试内容,则视为可访问,先将其存储到数据库中;
第二步,从数据库中获取到列表页链接,获取到其中的目标内容,如果目标内容因不知道的原因获取失败,直接暴力跳过,如果还可以查看url最好

2 网页返回内容与etree查询返回格式

response = urllib.request.urlopen(req, timeout=25)  # 返回一个 response对象。
html_Content = response.read()  # 获取其中的内容,且格式为str。
####################################
html = etree.HTML(html_Content)  # 返回字节格式
TestEle = html.xpath(u"//*[@id='app_ck']/text()")
Parse_Testing = str(TestEle[0])  

3 函数间传参原则是参数少,单个参数的体量小
比如经常会出现的函数中,传参是传入数据库中一行的id还是一行的所有元素所存在的dict对象中。

4 测试爬取规则是否完整:以局部估计整体
如果要保证每个爬取路径都能获取到目标内容,不太可能,尤其是布局不稳定的时候,这时不妨从局部出发,先爬取几百条,查看每个属性的内容是否如自己预想的一样。
同时,观察有的属性是否可以去除,哪些属性又是需要修改。

5 正则表达式的操作
1)match()
确定RE是否匹配字符串的开头
2)search()
扫描字符串,查找和RE匹配的任何位置。
3)findall()
找到所有RE匹配的子字符串,并作为一个列表返回。
4)finditer()
发现所有RE匹配的子字符串,并作为一个iterator返回

re.match与re.search的区别
re.match从字符串的开始位置进行匹配,如果字符串开始不符合正则表达式,则匹配失败,函数返回空;
而re.search匹配整个字符串,直到找到一个匹配成功的则进行返回,如果整个字符串中都没有找到匹配成功的,则返回空

参考文章:

正则表达式语法

6 获取span标签内的内容
用户评论内容都在<span class="ctt"></span>中,其中,普通评论和热门评论内容都很容易提取,采用.xpath['span[@class='ctt']/text()']即可。

7 if-else结构返回数据类型要统一

PositionName = html.xpath(u"/html/body/div[3]/div[2]/div[2]/div/div[1]/h1/text()")
PositionName = PositionName[0] if PositionName else "NoInfor"

也就是说,如果PositionName[0]是字符串,则else返回应该为字符串格式,如果是列表,就应该返回空列表;如果是数字,则返回0;以保证数据库中各属性的数据类型一致。

8 正则:圆括号与group的表达

line = "Cats are smarter than dogs"
matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)
 
if matchObj:
   print ("matchObj.group() : ", matchObj.group())
   print ("matchObj.group(1) : ", matchObj.group(1))
   print ("matchObj.group(2) : ", matchObj.group(2))
else:
   print ("No match!!")
####################################################33
matchObj.group() :  Cats are smarter than dogs
matchObj.group(1) :  Cats
matchObj.group(2) :  smarter

Python3 正则表达式
9 去除文本左右空格与内部空格、特殊字符

"   xyz   ".strip()            # returns "xyz"  
"   xyz   ".lstrip()           # returns "xyz   "  
"   xyz   ".rstrip()           # returns "   xyz"  
"  x y z  ".replace(' ', '')   # returns "xyz" 
######################################3
replace("\n", "")    # 换行符
replace("\t", "")    # 制表符

10 利用value_counts()观察某一列的取值分布

salary = df.Salary
salary_dict = dict(salary.value_counts())
print(salary_dict.keys())

11 python的列表对象的append方法
cost_list.append(cost) append 是对原对象进行的改动

12 append、extend函数的区别
python中list添加元素的方法append()、extend()和insert()

In [1]: a = [1, 2]
In [2]: b = [3, 4]
In [3]: a.append(b)
In [4]: a
Out[4]: [1, 2, [3, 4]]
#############################
In [1]: a = [1, 2]
In [2]: b = [3, 4]
In [3]: a.extend(b)
In [4]: a
Out[4]: [1, 2, 3, 4]
##########################
# insert()函数:将新元素添加到指定索引号前面
In [1]: a = [1, 2, 3, 4, 5]
In [2]: a.insert(0, 0)
In [3]: a
Out[3]: [0, 1, 2, 3, 4, 5]

13 模型的保存
pickle.dump(obj, file, [,protocol])

注释:序列化对象,将对象obj保存到文件file中去。参数protocol是序列化模式,默认是0(ASCII协议,表示以文本的形式进行序列化),protocol的值还可以是1和2(1和2表示以二进制的形式进行序列化。其中,1是老式的二进制协议;2是新二进制协议)

Python中Pickle模块的dump()方法和load()方法

4 mongodb操作

爬虫系列之mongodb

1 find函数的指定列显示

find函数中第二个参数指定是否展示某些键值,1表示只展示该键值,0表示不显示该键值,_id键值比较特殊,除非指定不显示,否则都会显示。

2 MongoDB的查询操作

# MongoDB AND 条件
db.col.find({"by":"菜鸟教程", "title":"MongoDB 教程"}).pretty()
# MongoDB OR 条件
db.col.find({$or:[{"by":"菜鸟教程"},{"title": "MongoDB 教程"}]})
# AND 和 OR 联合使用
# 'where likes>50 AND (by = '菜鸟教程' OR title = 'MongoDB 教程')'
db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]})

dataSets = DetailsDB.find({"position_one": {"$in":position},},其中position= ["人工智能","数据分析"]

参考文章:MongoDB查询

3 mongodb的排序操作

# skip(), limilt(), sort()三个放在一起执行的时候,执行的顺序是先 sort(), 然后是 skip(),最后是显示的 limit()。
db.col.find({},{"title":1,_id:0}).sort({"likes":-1})

4 查看数据库的基本信息

show dbs可以查看到各个数据库的内存占用;
db.user.find().sort({"name":1,})排序操作;
db.user.find({'age':{"$gt":30}}).count()获取查询数据的数目
db.stats返回当前数据库的状态信息;
db.getName()返回当操作数据库的名称;
db.copyDatabase('mail_addr','mail_addr_tmp')复制数据库,做备份

参考文章:MongoDb 命令查询所有数据库和表

5 Matplotlib绘图

1 配置中文环境
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
参考文章:说说在 Matplotlib 中如何显示中文字符

2 几乎在任何方法中都可用到的参数
x = 0.9 表示标题或者坐标轴的标签位置处于整个图像横向长度的百分之九十。y = 0.8 亦然;(title、xlabel)
fontdict={'size':16,'color':'black'} 在任何文字的方法中都可以使用(text、title、xlabel)

3 保存图片

plt.savefig( ) 参数是相对路径或者绝对路径

4 plt.text方法的参数说明
plt.text()函数解析(最清晰的解释)

5 Annotation参数说明
Matplotlib 中文用户指南 4.5 标注

6 正则表达式匹配

1 匹配点号而非使用点号匹配任意字符的用处

content = re.search(r'(\d+)-([\d.]+)',"30-1..0.0万/年")
content.group(2)

7 大牛博客

酷徒編程知識庫
简单线性回归(梯度下降法) python实现

GURU99

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值