从文本文件中读取博客数据并将其提取到文件中

通常情况下我们可以使用 Python 中的文件操作来实现这个任务。下面是一个简单的示例,演示了如何从一个文本文件中读取博客数据,并将其提取到另一个文件中。

假设你的博客数据文件(例如 blog_data.txt)的格式

在这里插入图片描述

1、问题背景

我们需要从包含博客列表的文本文件中读取指定数量的博客(n)。然后提取博客数据并将其添加到文件中。这是应用nlp到数据的整个作业的一部分。

以下是我们已经完成的工作:

import urllib2
from bs4 import BeautifulSoup

def create_data(n):
    blogs=open("blog.txt","r") #opening the file containing list of blogs

f=file("data.txt","wt") #Create a file data.txt

with open("blog.txt")as blogs:
    head = [blogs.next() for x in xrange(n)]
    page = urllib2.urlopen(head['href'])

​    soup = BeautifulSoup(page)
​    link = soup.find('link', type='application/rss+xml')print link['href']

​    rss = urllib2.urlopen(link['href']).read()
​    souprss = BeautifulSoup(rss)
​    description_tag = souprss.find('description')

​    f = open("data.txt","a") #data file created for applying nlp
​    f.write(description_tag)

但是,这段代码不起作用。它只能在直接给出链接时工作,例如:

page = urllib2.urlopen("http://www.frugalrules.com")

我们从另一个脚本调用这个函数,用户在其中给出输入n。出错的原因是什么?

Traceback:

    Traceback (most recent call last):
  File "C:/beautifulsoup4-4.3.2/main.py", line 4, in <module>
    create_data(2)#calls create_data(n) function from create_data
  File "C:/beautifulsoup4-4.3.2\create_data.py", line 14, in create_data
    page=urllib2.urlopen(head)
  File "C:\Python27\lib\urllib2.py", line 127, in urlopen
    return _opener.open(url, data, timeout)
  File "C:\Python27\lib\urllib2.py", line 395, in open
    req.timeout = timeout
AttributeError: 'list' object has no attribute 'timeout'

2、解决方案

head是一个列表:

head = [blogs.next() for x in xrange(n)]

列表由整数索引(或切片)索引。当head是一个列表时,不能使用head[‘href’]:

page = urllib2.urlopen(head['href'])

我们很难确切地说如何修复这个问题,因为不知道blog.txt的内容。如果blog.txt的每一行都包含一个URL,那么可以使用:

with open("blog.txt") as blogs:
    for url in list(blogs)[:n]:
        page = urllib2.urlopen(url)
        soup = BeautifulSoup(page.read())
        ...
        with open('data.txt', 'a') as f:
            f.write(...)

请注意,file是open的弃用形式(它在Python3中被删除)。不要使用f=file(“data.txt”,“wt”),而是使用更现代的with-statement语法(如上所示)。

例如:

import urllib2
import bs4 as bs

def create_data(n):
    with open("data.txt", "wt") as f:
        pass
    with open("blog.txt") as blogs:
        for url in list(blogs)[:n]:
            page = urllib2.urlopen(url)
            soup = bs.BeautifulSoup(page.read())

            link = soup.find('link', type='application/rss+xml')
            print(link['href'])

            rss = urllib2.urlopen(link['href']).read()
            souprss = bs.BeautifulSoup(rss)
            description_tag = souprss.find('description')

            with open('data.txt', 'a') as f:
                f.write('{}\n'.format(description_tag))

create_data(2)

我们假设你在循环中打开、写入和关闭data.txt,因为你想保存部分结果——也许是为了防止程序被迫过早终止。否则,只需在最开始打开一次文件会更简单:

with open("blog.txt") as blogs, open("data.txt", "wt") as f:

这个脚本会读取 blog_data.txt 文件中的数据,提取每个博客数据块的标题、作者、日期和正文内容,然后将这些数据写入到 extracted_blog_data.txt 文件中。

大家可以根据实际情况修改输入文件和输出文件的文件名,以及文件路径。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/698793.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

3D模型如何快速渲染效果图?

3D模型快速渲染效果图的关键在于优化渲染过程&#xff0c;减少不必要的计算量&#xff0c;并充分利用软件和硬件的性能。那么&#xff0c;3D模型如何实现快速渲染效果图呢? 一、优化模型与材质 1.优化模型文件&#xff1a;尽量减少模型面数&#xff0c;因为模型面数越多&#…

独具魅力的 App UI 风格才能称之为优秀

独具特色的App UI 长什么样&#xff01;看这里

【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版7(附带项目源码)

最终效果 系列导航 文章目录 最终效果系列导航前言绘制进度条UI控制关卡进度测试按配置表使用关卡进度变化源码结束语 前言 本节主要实现关卡进度条的功能 绘制进度条UI 控制关卡进度测试 新增ProgressPanel代码&#xff0c;控制关卡进度 public class ProgressPanel : Mon…

(css)el-tabs滚动按钮浮动问题

(css)el-tabs滚动按钮浮动问题 修改前&#xff1a; 修改后&#xff1a; 思路&#xff1a;找到相应元素&#xff0c;降低层级 css写法&#xff1a; ::v-deep .el-tabs__nav {z-index: 1; }

【设计模式】行为型设计模式之 备忘录模式(快照模式)

介绍 备忘录应用场景明确并且有限&#xff0c;一般用来数据的防丢失、撤销和恢复。对大对象的备份和恢复&#xff0c;备忘录模式能有效的节省时间和空间开销。 定义 备忘录模式&#xff1a;也称为快照模式&#xff0c;在不违背封装原则的前提下&#xff0c;捕获一个对象的内…

你必须得认真体验下 TDengine Cloud 了!抢 600 元体验券

你真的了解 TDengine Cloud 吗&#xff1f; 在当今快速演变的数字经济时代&#xff0c;企业面临着前所未有的挑战和机遇。数据量的激增、计算需求的不断增长以及对业务敏捷性的迫切需求&#xff0c;促使企业寻求更加灵活、高效的技术解决方案。云服务由此应运而生&#xff0c;成…

文献解读-农业系列-第七期|《高粱驯化的基因组足迹和多种最终用途的育种选择》

关键词&#xff1a;高粱基因分析&#xff1b;基因组变异检测&#xff1b;全基因组重测序&#xff1b; 文献简介 标题&#xff08;英文&#xff09;&#xff1a;Genomic footprints of sorghum domestication and breeding selection for multiple end uses标题&#xff08;中文…

二叉树左右树交换

leetcode 226题 翻转二叉树 题目描述 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1]示例 2&#xff1a; 输入&#xff1a;root [2,1,3]…

理解 Bearer Token:什么是它以及如何运作?

在当前数字化时代&#xff0c;网络安全尤为关键。随着技术快速进步&#xff0c;需求日益增长&#xff0c;保障应用程序中用户数据的安全成为开发者们的首要任务。其中&#xff0c;Bearer Token 作为一种高效的验证策略&#xff0c;在防止未授权访问中发挥着不可或缺的作用。 解…

算法005:有效三角形的个数

. - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/valid-triangle-number/ 要组成三角形的三条边&#xff0c;需要保证&am…

沂蒙精神宣讲员尹志林寻访“电台双杰”秦鸿钧贺伯珍烈士故居

临沂信息联播讯&#xff08;张春兄、冯爱云&#xff09; 近日&#xff0c;为了更好的弘扬沂蒙精神、讲好先烈事迹&#xff0c;沂蒙精神宣讲员、《百集学沂蒙党史颂沂蒙精神大讲堂》主讲人、中共临沂市兰山区委宣传部宣讲团成员尹志林一行&#xff0c;专程赶往沂南县辛集镇世和村…

wgcloud可以监测交换机的哪些数据

WGCLOUD可以监测交换机的cpu&#xff0c;内存&#xff0c;温度&#xff0c;电压&#xff0c;磁盘&#xff0c;流量传输速率等数据 WGCLOUD也是基于SNMP协议来监测交换机的

新能源汽车不安全?新能源汽车测试之方案篇——充电桩综合测试

背景 随着全球对气候变化和环境污染问题的日益加剧&#xff0c;新能源汽车作为一种环保、节能的交通工具备受关注。其发展背景主要源于对环境问题的关注以及对传统燃油汽车依赖的减少。新能源汽车的出现&#xff0c;带来了减少尾气排放、节能减排、保护环境等多方面的优点&…

梯度提升树GBDT系列算法

Boosting方法的基本元素与基本流程&#x1f4ab; 在Boosting集成算法当中&#xff0c;我们逐一建立多个弱评估器&#xff08;基本是决策树&#xff09;&#xff0c;并且下一个弱评估器的建立方式依赖于上一个弱评估器的评估结果&#xff0c;最终综合多个弱评估器的结果进行输出…

div拖拽改变宽高

目前是点击按照右下角边框拖拽改变大小 如果要点击按住内容拖拽也改变大小 则传入事件 $ event即可 startDrag(index,$event)和 drag(index,$event) 以下代码可直接使用 <template><div><div>目前是点击按照右下角边框拖拽改变大小 <br> 如果要点击按…

如何系统学习vue框架

前言 在软件开发的浩渺星海中&#xff0c;编程规范如同航海的罗盘&#xff0c;为我们指引方向&#xff0c;确保我们的代码之旅能够顺利、高效地到达目的地。无论是个人开发者还是大型团队&#xff0c;编程规范都是提升代码质量、保障项目成功不可或缺的一环。 因此&#xff0c…

MySQL表设计经验汇总篇

文章目录 1、命名规范2、选择合适的字段类型3、主键设计要合理4、选择合适的字段长度5、优先考虑逻辑删除&#xff0c;而不是物理删除6、每个表都需要添加通用字段7、一张表的字段不宜过多8、定义字段尽可能not null9、合理添加索引10、通过业务字段冗余来减少表关联11、避免使…

【漏洞复现】宏景eHR openFile.jsp 任意文件读取漏洞

0x01 产品简介 宏景eHR人力资源管理软件是一款人力资源管理与数字化应用相融合&#xff0c;满足动态化、协同化、流程化、战略化需求的软件。 0x02 漏洞概述 宏景eHR openFile.jsp 接口处存在任意文件读取漏洞&#xff0c;未经身份验证攻击者可通过该漏洞读取系统重要文件(如…

树-二叉树的最大路径和

一、问题描述 二、解题思路 因为各个节点的值可能为负数&#xff0c;初始化res(最大路径和)的值为最小整数&#xff1a;Integer.MIN_VALUE 我们这里使用深度遍历&#xff08;递归&#xff09;的方法&#xff0c;先看某一个子树的情况&#xff1a; 这里有一个技巧&#xff0c;…

纯音听力检测图有哪些形状?

纯音听力检测图有哪些形状&#xff1f; 当选择合适的放大装置时,听力图形状很重要。例如,听力图为下降型或高频陡降型的顾客可能受益于开放式验配,即可以泄漏低频声音,并对高频声音进行放大。 听力图形状分为以下几种&#xff1a; 下降型:低频听力较好,高频听力较差 上升型…