今天我学到Python的数据存储,所以就不从头开始写了。
首先用requests将网页源代码获取下来,然后用pyquery解析库解析,最后将提取提取的标题、回答者、回答内容保存为TXT文本。
代码如下:
'''
数据存储,利用pyquery解析库
爬去知乎“发现”页面上“热门话题”部分
'''
import requests,docx
from pyquery import PyQuery as pq
url='https://www.zhihu.com/explore'
headers={
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36'
}
def get_page(url,headers):
html=requests.get(url,headers=headers).text
#实例化pyquery对象
doc=pq(html)
#找到所有class属性值是explore-tab和feed-item的节点。调用items()方法得到一个生成器来遍历
items=doc('.explore-tab .feed-item').items()
for item in items:
#获取问题,用text()方法得到纯文本内容
#find()方法查找所有符合条件的子孙节点
question=item.find('h2').text()
#获取回答者的姓名
author=item.find('.author-link-line').text()
#获取回答的内容。由于回答问题的内容中有很多HTML代码,所以先用pq将代码解析后,再输出纯文本内容
#html()方法是得到节点内部的HTML文本,pq负责解析
answer=pq(item.find('.content').html()).text()
save_file(question,author,answer)
def save_file(question,author,answer):
with open('zhihuone.txt','a',encoding='utf-8') as f:
f.write('\n'.join([question,author,answer]))
f.write('\n'+'='*50+'\n')
if __name__=='__main__':
get_page(url,headers)
总结:此段代码用到了requests请求,pyquery解析,和TXT存储等内容。应重点掌握对pyquery解析库的使用和文本存储的使用。