热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python爬取知乎发现文件存储[txt,json,csv,mongodb]

使用XPathimportrequestsimportjsonfromlxmlimportetreefromurllibimportparse遇到不懂的问题?

使用XPath

import requests
import json
from lxml import etree
from urllib import parse
'''
遇到不懂的问题?Python学习交流群:821460695满足你的需求,资料都已经上传群文件,可以自行下载!
'''
url = 'https://www.zhihu.com/explore'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}
html = requests.get(url, headers=headers).text
# 响应返回的是字符串,解析为HTML DOM模式 text = etree.HTML(html)
text = etree.HTML(html)
# 返回所有内容的结点位置
node_list = text.xpath('//div[@class="explore-feed feed-item"]')
items ={}
for node in node_list:# xpath返回的列表,这个列表就这一个参数,用索引方式取出来#问题question = node.xpath('.//h2/a')[0].text.replace("\n","")# 作者author = node.xpath('.//*[@class="author-link-line"]/*')[0].text#author = "".join(node.xpath('.//*[@class="author-link-line"]//text()')).replace("\n","")# 回答answer = node.xpath('.//*[@class="content"]')[0].text#answer = "".join(node.xpath('.//*[@class="content"]/text()')).strip()#answer = str(node.xpath('.//*[@class="content"]/text()'))[1:-1]items = {"question" : question,"author" : author,"answer" : answer,} with open("explore.json", "a") as f:#f.write(json.dumps(items, ensure_ascii = False).encode("utf-8") + "\n")f.write(json.dumps(items, ensure_ascii = False) + "\n")

image.png
####保存为TXT

import requests
from lxml import etree
from urllib import parse
'''
遇到不懂的问题?Python学习交流群:821460695满足你的需求,资料都已经上传群文件,可以自行下载!
'''
url = 'https://www.zhihu.com/explore'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}
html = requests.get(url, headers=headers).text
# 响应返回的是字符串,解析为HTML DOM模式 text = etree.HTML(html)
text = etree.HTML(html)
# 返回所有内容的结点位置
node_list = text.xpath('//div[@class="explore-feed feed-item"]')for node in node_list:# xpath返回的列表,这个列表就这一个参数,用索引方式取出来#问题question = node.xpath('.//h2/a')[0].text.replace("\n","")# 作者author = node.xpath('.//*[@class="author-link-line"]/*')[0].text#author = "".join(node.xpath('.//*[@class="author-link-line"]//text()')).replace("\n","")# 回答answer = node.xpath('.//*[@class="content"]')[0].text#answer = "".join(node.xpath('.//*[@class="content"]/text()')).strip()#answer = str(node.xpath('.//*[@class="content"]/text()'))[1:-1]with open('explore.txt', 'a', encoding='utf-8') as file:file.write('\n'.join([question, author, answer]))file.write('\n' + '=' * 50 + '\n')

image.png

保存为csv

import requests
from lxml import etree
from urllib import parse
import csvurl = 'https://www.zhihu.com/explore'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}
html = requests.get(url, headers=headers).text
# 响应返回的是字符串,解析为HTML DOM模式 text = etree.HTML(html)
text = etree.HTML(html)
# 返回所有内容的结点位置
node_list = text.xpath('//div[@class="explore-feed feed-item"]')for node in node_list:# xpath返回的列表,这个列表就这一个参数,用索引方式取出来#问题question = node.xpath('.//h2/a')[0].text.replace("\n","")# 作者author = node.xpath('.//*[@class="author-link-line"]/*')[0].text#author = "".join(node.xpath('.//*[@class="author-link-line"]//text()')).replace("\n","")# 回答,为方便展示,只取部分内容,text[ :10]answer = node.xpath('.//*[@class="content"]')[0].text[ :10]#answer = node.xpath('.//*[@class="content"]')[0].text#answer = "".join(node.xpath('.//*[@class="content"]/text()')).strip()#answer = str(node.xpath('.//*[@class="content"]/text()'))[1:-1]with open('explore.csv', 'a', encoding='utf-8') as csvfile:fieldnames = ['question', 'author', 'answer']writer = csv.DictWriter(csvfile, fieldnames=fieldnames)writer.writeheader()writer.writerow({'question': question, 'author': author, 'answer': answer})

####读取csv

1 import csv
2
3 with open('explore.csv', 'r', encoding='utf-8') as csvfile:
4 reader = csv.reader(csvfile)
5 for row in reader:
6 print(row)

image
####保存到MongoDB

import requests
from lxml import etree
from urllib import parse
from pymongo import MongoClientclient = MongoClient()
db = client['explore']
collection = db['explore']url = 'https://www.zhihu.com/explore'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}
html = requests.get(url, headers=headers).text
# 响应返回的是字符串,解析为HTML DOM模式 text = etree.HTML(html)
text = etree.HTML(html)
# 返回所有内容的结点位置
node_list = text.xpath('//div[@class="explore-feed feed-item"]')for node in node_list:# xpath返回的列表,这个列表就这一个参数,用索引方式取出来#问题question = node.xpath('.//h2/a')[0].text.replace("\n","")# 作者author = node.xpath('.//*[@class="author-link-line"]/*')[0].text#author = "".join(node.xpath('.//*[@class="author-link-line"]//text()')).replace("\n","")# 回答answer = node.xpath('.//*[@class="content"]')[0].text#answer = "".join(node.xpath('.//*[@class="content"]/text()')).strip()#answer = str(node.xpath('.//*[@class="content"]/text()'))[1:-1]items = {"question" : question,"author" : author,"answer" : answer,} if collection.insert(items):print('Saved to Mongo')

image


推荐阅读
  • 本文介绍了使用 Python 编程语言高效抓取微博文本和动态网页图像数据的方法。通过详细的示例代码,展示了如何利用爬虫技术获取微博内容和动态图片,为数据采集和分析提供了实用的技术支持。对于对网络数据抓取感兴趣的读者,本文具有较高的参考价值。 ... [详细]
  • 如何将Python与Excel高效结合:常用操作技巧解析
    本文深入探讨了如何将Python与Excel高效结合,涵盖了一系列实用的操作技巧。文章内容详尽,步骤清晰,注重细节处理,旨在帮助读者掌握Python与Excel之间的无缝对接方法,提升数据处理效率。 ... [详细]
  • 可转债数据智能抓取与分析平台优化
    本项目旨在优化可转债数据的智能抓取与分析平台。通过爬取集思录上的可转债信息(排除已发布赎回的债券),并结合安道全教授提出的三条安全线投资策略,新增了建仓线、加仓线和重仓线,以提供更精准的投资建议。 ... [详细]
  • 解决问题:1、批量读取点云las数据2、点云数据读与写出3、csf滤波分类参考:https:github.comsuyunzzzCSF论文题目ÿ ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 本指南介绍了 `requests` 库的基本使用方法,详细解释了其七个主要函数。其中,`requests.request()` 是构建请求的基础方法,支持其他高级功能的实现。此外,我们还重点介绍了如何使用 `requests.get()` 方法来获取 HTML 网页内容,这是进行网页数据抓取和解析的重要步骤。通过这些基础方法,读者可以轻松上手并掌握网页数据抓取的核心技巧。 ... [详细]
  • 如何在 Node.js 环境中将 CSV 数据转换为标准的 JSON 文件格式? ... [详细]
  • 利用 Python 中的 Altair 库实现数据抖动的水平剥离分析 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • MongoDB 默认使用哪个端口?—— MongoDB 教程详解
    MongoDB 在默认配置下监听的端口是 27017,用户在连接数据库时通常会使用此端口进行各种操作,包括数据插入、查询和更新等。除了 27017 端口外,MongoDB 还支持其他配置选项,以满足不同的应用场景和安全需求。 ... [详细]
author-avatar
2012我的语言
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有