Python 笔记

这里记录学习Python的一些零散笔记

Python

安装依赖包

通过requirements.txt文件来提示缺失的包及自动安装包

可以在项目根目录下创建文件 requirements.txt文件,内容格式如下;

requests==2.7.0

打开项目以后,如果没有装requests包,PyCharm就会提示,然后点安装即可.

根据已安装的Python包生成requirements.txt

pip freeze > requirements.txt

安装

pip install -r requirements.txt

自定义包路径设置site-packages

通过自定义包设置可以让所有项目使用均使用该包,而无需每次引用或复制包到项目目录。

显示当前所有的包路径

python -m site

设置路径

在site-packages目录中增加自己包的位置,新建一个文件或者在现有pth文件中添加

1
2
3
4
5
6
7
8
# 编辑文件
vim /Library/Python/2.7/site-packages/Extras.pth
文件内容如下:最后一行是我自己包的路径
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC
/Users/haseochen/data/HJ/SourceCode/dw_etl/py_module

爬虫

找到 html中的某个值

比如找到 <span itemprop="price" class="now-price">$115.00</span> 中的$115

1
2
3
4
5
6
request = requests.get("http://www.johnlewis.com/john-lewis-wade-office-chair-black/p447855")
content = request.content
soup = BeautifulSoup(content,"html.parser")
element = soup.find("span",{"itemprop":"price","class":"now-price"})
string_price=element.text.strip() # "$115.00"
price_without_symbol = string_price[1:] # "115.00"

MongoDB 操作

连接

首先安装pymongo

1
2
3
4
5
6
7
8
9
10
11
uri="mongodb://127.0.0.1:27017" # 数据库地址
client = pymongo.MongoClient(uri) #客户端
database = client['fullstack'] # 数据库
collection = database['students'] # 数据表
students = collection.find({}) #获取students数据表的所有内容
for student in students:
print(student)
students = [student for student in collection.find({})] #将student赋值给一个list
students = [student['mark'] for student in collection.find({}) if student['mark']==99.0]

插入数据

定义一个类来连接数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Database(object):
URI ="mongodb://127.0.0.1:27017"
DATABASE = None
@staticmethod
def initialize():
client = pymongo.MongoClient(Database.URI)
Database.DATABASE = client['fullstack']
@staticmethod
def insert(collection,data):
Database.DATABASE[collection].insert(data)
@staticmethod
def find(collection,query):
return Database.DATABASE[collection].find(query)
@staticmethod
def find_one(collection,query):
return Database.DATABASE[collection].find_one(query)

定义一个类用来写入数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import uuid
from database import Database
import datetime
class Post(object):
def __init__(self,blog_id,title,content,author,date=datetime.datetime.utcnow(),id=None):
self.blog_id=blog_id
self.title=title
self.content=content
self.author=author
self.date=date
self.id= uuid.uuid4().hex if id is None else id
def save_to_mongo(self):
Database.insert(collection='posts',data=self.json())
def json(self):
return {
'id':self.id,
'blog_id':self.blog_id,
'auther':self.author,
'codntent':self.content,
'title':self.title,
'created_date':self.created_date
}
@staticmethod
def from_mongo(id):
return Database.find_one(collection='posts',query={'id':id})
@staticmethod
def from_blog(id):
return [post for post in Database.find(collection='posts',query={'blog_id':id})]

调用

1
2
3
4
5
6
7
from database import Database
from models.post import Post
Databaase.initilize()
post = Post((blog_id="123",title="a title",content="some content",author="Haseo")
post = Post.from_mongo('xxxxxxxxx')
打赏支持:支付宝/微信。如果你觉得我的文章对你有所帮助,可以打赏我哟。