数据的存储--TXT文本存储

    当我们用解析器解析出数据之后,接下来的一步就是对数据进行存储了,保存的形式可以多种多样,最简单的形式可以直接保存为文本文件,如 TXT、Json、CSV 等等,另外还可以保存到数据库中,如关系型数据库 MySQL,非关系型数据库 MongoDB、Redis 等等。

优点:操作简单,且可以兼容几乎所有的平台;
缺点:不利于检索。
如果对检索和数据结构要求不高,追求方便第一的话,可以采用 TXT 文本存储。

案例:这里是文章:

关于xpath和Pyquery之间的配合使用

的延续

直接打印不存储的代码

import requests
from lxml import etree
from pyquery import PyQuery as pq
url='https://www.zhihu.com/explore'
headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'}
response=requests.get(url,headers=headers)
element=etree.HTML(response.text)
print(element)
items=element.xpath('//div[@class="explore-feed feed-item"]')

for item in items:
    title = item.xpath( './h2/a/text()')  # 这里虽然等价于title=element.xpath('//div[@class="explore-feed feed-item"]/h2/a/text()'),但是需要在h2的/前面加上一个点
    print('题目是:',title[0])#这里的主要问题是:总是打印不在一行上,尚未找到合适的解决办法。
    answer=item.xpath('.//div[@class="zm-item-rich-text expandable js-collapse-body"]//textarea[@class="content"]')#注意这里依然是斜杠前面要加点
    s=str(answer[0].xpath('string(.)'))
    answer1=pq(s).text()
    print(answer1)
    print('\n' + '=' * 500 + '\n')

存储在txt文件中的代码

import requests
from lxml import etree
from pyquery import PyQuery as pq
url='https://www.zhihu.com/explore'
headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'}
response=requests.get(url,headers=headers)
element=etree.HTML(response.text)
print(element)
items=element.xpath('//div[@class="explore-feed feed-item"]')

for item in items:
    title = item.xpath( './h2/a/text()')  # 这里虽然等价于title=element.xpath('//div[@class="explore-feed feed-item"]/h2/a/text()'),但是需要在h2的/前面加上一个点
    answer=item.xpath('.//div[@class="zm-item-rich-text expandable js-collapse-body"]//textarea[@class="content"]')#注意这里依然是斜杠前面要加点
    s=str(answer[0].xpath('string(.)'))
    answer1=pq(s).text()
    print('\n' + '=' * 500 + '\n')
    with open('1.txt','a',encoding='utf-8')as f:
        f.write('\n'.join([title[0],answer1]))
        f.write('\n' + '=' * 500 + '\n')
        f.close()

 

posted @ 2019-05-23 00:20  舒畅123  阅读(860)  评论(0编辑  收藏  举报