包含的库有 requests, sqlalchemy, datatime, lxml

import requests

requests

请求

GET 请求 requests.get(url)
请求参数 requests.get(url, params={})
定制请求头 requests.get(url, headers={})
POST 请求 requests.post(url)
请求参数 requests.post(url, data={})
定制请求头 requests.post(url, headers={})

响应

文本内容 r.text
响应编码 r.encoding
二进制响应内容 r.content
json 响应内容 r.json()
响应状态码 r.status_code
响应头 r.headers['headr_name']
响应 cookie r.cookies['cookie_name']

sqlalchemy

ORM用法

导入

1
2
3
from slqalchemy import Column, String, create_engine
from slqalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

创建基类对象

Base = declarative_base()

定义 Model

1
2
3
4
5
6
class User(Base):
# 声明表名
__tablename__ = 'User'

# 声明表结构
id = Column(String(20), primary_key=True)

初始化数据库连接

engine = create_engine('数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名', echo=True) # echo=True 打印 sql 语句

创建 DBSession

DBSession = sessionmaker(bind=engine)

创建 session

session = DBSession()

添加对象到 session

session.add(user)

查询数据

提交 session

session.commit()

关闭 session

session.close()

执行普通 sql 语句

新增数据

1
2
sql = text('INSERT INTO user(name, pwd) VALUES (:name, :pwd)')
data = session.execute(sql, {'name': '', 'pwd': ''})

删除数据

1
2
sql = text('DELETE FROM user WHERE id = :id')
data = session.execute(sql, {'id': ''})

查询数据

1
2
3
4
5
6
sql = text('SELECT * FROM user WHERE id < :id')
data = session.execute(sql, {'id': ''})
data.rowcount # 显示条数
data.fetchone() # 获取一条数据
for i in data.fetchall(): # 获取所有数据
print(i)

更新数据

1
2
sql = text('UPDATE user SET name = :old_name WHERE name = :new_name')
session.execute(sql, {'old_name': '', 'new_name': ''})

datatime

1
from datatime import datatime

格式化字符串为 datatime

datatime.strptime('2016-08-06', '%Y-%m-%d')

datatime 格式化字符串

datatime_obj.strftime('%Y-%m-%d')

获取当前时间的 datetime

datetime.now()

datetime 转 timestamp

datetime_obj.timestamp()

timestamp 转 datetime, 使用本地时区

datetime.fromtimestamp(float)

timestamp 转 datetime, 使用 UTC 标准时区

datetime.utcfromtimestamp(float)

datetime 加减

1
2
from datetime import timedelta, datetime
datetime.now() + timedelta(hours=10)

Beautiful Soup

导入 bs4 库

from bs4 import BeautifulSoup

创建 BeautifulSoup 对象

soup = BeautifulSoup(html, 'html.parser') # 或者使用 lxml 解析 BeautifulSoup(html, 'lxml')

得到第一个匹配的 Tag 对象,type 为 bs4.element.Tag

1
2
3
soup.title # <title>The Dormouse's story</title>
soup.head # <head><title>The Dormouse's story</title></head>
soup.p # <p class="title" name="dromouse"><b>The Dormouse's story</b></p>

Tag 对象属性

  1. name 返回标签名
  2. attrs 返回标签的所有属性和值,得到一个字典
  3. 对 Tag 对象属性修改 soup.a['src']=''
  4. 删除 Tag 某一个属性 del soup.a['src']

获取 Tag 对象的内部的文字

soup.p.string 返回一个 NavigableString 对象

遍历文档树

获取 Tag 子节点

Tag_obj.contents 返回一个列表
Tag_obj.children 返回一个 list 生成器对象

获取后代节点

Tag_obj.descendants 可使用 for 进行遍历

获取多个内容

soup.strings 返回一个生成器对象
soup.stripped_strings 去除空格和空行

搜索 Tag 节点的后代节点

Tag_obj.find_all(name, attrs, recursive, text, **kwargs)
name 可使用

  1. 字符串 Tag_obj.find_all('a')
  2. 正则表达式 Tag_obj.find_all('re.compile('^b')')
  3. 列表 Tag_obj.find_all('a', 'img')
  4. True 表示查找所有节点 Tag_obj.find_all(True)
  5. 传方法可以自定义过滤器 Tag_obj.find_all(filter)