数据的采集与解析

数据的采集与解析

  • 下载数据 - urllib / requests / aiohttp。
  • 解析数据 - re / lxml / beautifulsoup4(bs4)/ pyquery。
  • 缓存和持久化 - pymysql / redis / sqlalchemy / peewee / pymongo。
  • 序列化和压缩 - pickle / json / zlib。
  • 调度器 - 进程 / 线程 / 协程。

BeautifulSoup的使用

  • find / find_all:字符串、正则表达式、列表、True、函数或Lambda。
  • select_one / select:CSS选择器

隔离级别

  • 由低到高
  • uncommitted read 读未提交, 性能最好,但会有脏数据(Dirty Read)
  • read committed - 提交后可读 不会有脏数据, 但会有不可重复读(Unrepeatable Read)
  • repeatable read - 可重复读数据 但会有幻读(Phantom Read)
  • serializable
  • 由低到高 隔离性越好,但性能越低
  • 查看数据库的隔离级别的命令
  • select @@tx_isolation;
  • 在全局修改事物隔离级别,这里设置为读级别
  • set global transaction isolation level read committed;
  • 临时修改隔离级别,这里设置的是最高级别
  • set session transaction isolation level serializable;
  • 为什么使用非关系性数据库

  • 摘要

  • MD5 32个字节, SHA1 48个字节, SHA256 64个字节
import hashlib
# 创建一个md对象, 同样可以创建sha1 ,sha256对象
hasher = hashlib.md5()
link = 'hello'
# 将link的内容变成字节再对其进行摘要
hasher.update(link.encode('utf-8'))
# 提取摘要结果
hasher.hexdigest()

数据储存

  • 序列化/反序列化
  • 序列化的三种工具 pickle / json / shelve
  • pickle : 可以将数据变成字节
  • json: dump /dumps / load / loads
  • 序列化-把对象变成字符或者字节序列
  • 反序列化-把字符或者字节序列还原成对象

  • 数据压缩

  • 需要先将数据序列化才可以进行数据压缩
  • zlib
    • compress(data) 压缩数据
    • decompress 解压缩
import hashlib
from urllib.error import URLError
from urllib.request import urlopen

import re
import pymysql
import ssl





# 通过指定的字符集对页面进行解码(不是每个网站都将字符集设置为utf-8)
def decode_page(page_bytes, charsets=('utf-8',)):
    page_html = None
    for charset in charsets:
        try:
            page_html = page_bytes.decode(charset)
            break
        except UnicodeDecodeError:
            pass
            # logging.error('Decode:', error)
    return page_html


# 获取页面的HTML代码(通过递归实现指定次数的重试操作)
def get_page_html(seed_url, *, retry_times=3, charsets=('utf-8',)):
    page_html = None
    try:
        if seed_url.startswith('http://') or seed_url.startswith('https://'):
            page_html = decode_page(urlopen(seed_url).read(), charsets)
    except URLError:
        # logging.error('URL:', error)
        if retry_times > 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值