• python-day8爬虫基础之数据存储


    数据存储,在爬虫中也是十分的重要,因为我们要把我们想要的数据保存到本地,其中最简单直接的就是保存为文件文本,比如:TXT、JSON、CSV等等,除此之外,我们还可以将其保存到数据库中,常见的数据库类型有关系型数据库(MySQL)和非关系型数据库(MongoDB、Redis)。今天主要是看着书学习了一下TXT文本存储。

    TXT文本存储的操作比较简单,同样也有一个就是不利于检索,上代码(爬取知乎“发现”页面的热门话题):

    import requests
    from pyquery import PyQuery as pq
    url = 'http://www.zhihu.com/explore'
    headers = {
        'Accept': 'image/webp,image/*,*/*;q=0.8',
        'Accept-Language':'zh-CN,zh;q=0.8',
        'Referer':'https://www.zhihu.com/explore',
        'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0'
    }
    html = requests.get(url,headers = headers).text
    # print(html)
    doc = pq(html)
    # print(doc)
    items = doc('.explore-tab .feed-item').items()
    
    
    for item in items:
        question = item.find('h2').text()
        author = item.find('.author-link-line').text()
        answer = pq(item.find('.content').html()).text()
        with open('zhuhu.txt', 'a',encoding='utf-8') as file:
            file.write('
    '.join([question,author,answer]))
            file.write('
    ' + '=' *50 + '
    ')
    print("ok")
    其中,我们主要用到了pyquery解析。还有一个需要解释的就是
    with open('zhihu.txt', 'a',encoding='utf-8') as file:
    中的zhihu.txt就是我们要保存的文件名称和类型,encoding='utf-8就是解码操作,如果不解码,返回的是二进制字符串,是无法正常阅读的,所以我们需要对其进行解码。
    a代表的是以追加方式打开一个文件,如果该文件已经存在,文件指针就会自动放到文件结尾,如果文件不存在,就会创建新的文件来写入。除了a之外,还有几个,下边一一介绍:
    r:以只读方式打开一个文件,文件的指针自动放到文件的开头。
    rb:以二进制只读方式打开一个文件,文件的指针自动放到文件的开头。
    r+:以读写方式打开一个文件,文件的指针自动放到文件的开头。
    rb+:以二进制读写方式打开一个文件,文件的指针自动放到文件的开头。
    w:以写入方式打开一个文件,如果文件已经存在,则将其覆盖,如果文件不存在,则创建新的文件。
    wb:以二进制写入方式打开一个文件,如果文件已经存在,则将其覆盖,如果文件不存在,则创建新的文件。
    w+:以读写方式打开一个文件,如果文件已经存在,则将其覆盖,如果文件不存在,则创建新的文件。
    ab:以二进制追加方式打开一个文件,如果文件已经存在,则文件指针会放在文件结尾,如果有新的内容,会写入到已有内容的后边;如果文件不存在,则创建新的文件。
    a+:以读写方式打开一个文件,如果文件已经存在,则文件指针会放在文件结尾,文件打开时会是追加模式,如果文件不存在,则创建新的文件。
    ab+:以二进制追加方式打开一个文件。如果文件已经存在,则文件指针将会放在文件结尾,如果文件不存在,则创建新文件用于读写。
  • 相关阅读:
    代码混淆那些事
    Windows10环境下 Nginx+ffmpeg自搭服务器制作RTMP直播流
    在Windows下搭建基于nginx的视频直播和点播系统
    windows下搭建基于nginx的rtmp服务器
    ijkplayer相关
    直播技术总结(三)ijkplayer的一些问题优化记录
    【.NET深呼吸】应用上下文(AppContext)
    【Win 10应用开发】自定义浮动层——Flyout
    【Win 10应用开发】AdaptiveTrigger在自定义控件中是可以触发的
    【.NET深呼吸】元组数据(Tuple)
  • 原文地址:https://www.cnblogs.com/jiangtongxue/p/9462163.html
Copyright © 2020-2023  润新知