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

2024-06-11 15:12

本文主要是介绍从文本文件中读取博客数据并将其提取到文件中,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

在这里插入图片描述

1、问题背景

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

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

import urllib2
from bs4 import BeautifulSoupdef create_data(n):blogs=open("blog.txt","r") #opening the file containing list of blogsf=file("data.txt","wt") #Create a file data.txtwith 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_dataFile "C:/beautifulsoup4-4.3.2\create_data.py", line 14, in create_datapage=urllib2.urlopen(head)File "C:\Python27\lib\urllib2.py", line 127, in urlopenreturn _opener.open(url, data, timeout)File "C:\Python27\lib\urllib2.py", line 395, in openreq.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 bsdef create_data(n):with open("data.txt", "wt") as f:passwith 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 文件中。

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

这篇关于从文本文件中读取博客数据并将其提取到文件中的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1051525

相关文章

Python在二进制文件中进行数据搜索的实战指南

《Python在二进制文件中进行数据搜索的实战指南》在二进制文件中搜索特定数据是编程中常见的任务,尤其在日志分析、程序调试和二进制数据处理中尤为重要,下面我们就来看看如何使用Python实现这一功能吧... 目录简介1. 二进制文件搜索概述2. python二进制模式文件读取(rb)2.1 二进制模式与文本

Springboot配置文件相关语法及读取方式详解

《Springboot配置文件相关语法及读取方式详解》本文主要介绍了SpringBoot中的两种配置文件形式,即.properties文件和.yml/.yaml文件,详细讲解了这两种文件的语法和读取方... 目录配置文件的形式语法1、key-value形式2、数组形式读取方式1、通过@value注解2、通过

C#实现将XML数据自动化地写入Excel文件

《C#实现将XML数据自动化地写入Excel文件》在现代企业级应用中,数据处理与报表生成是核心环节,本文将深入探讨如何利用C#和一款优秀的库,将XML数据自动化地写入Excel文件,有需要的小伙伴可以... 目录理解XML数据结构与Excel的对应关系引入高效工具:使用Spire.XLS for .NETC

Python自动化提取多个Word文档的文本

《Python自动化提取多个Word文档的文本》在日常工作和学习中,我们经常需要处理大量的Word文档,本文将深入探讨如何利用Python批量提取Word文档中的文本内容,帮助你解放生产力,感兴趣的小... 目录为什么需要批量提取Word文档文本批量提取Word文本的核心技术与工具安装 Spire.Doc

Qt实现对Word网页的读取功能

《Qt实现对Word网页的读取功能》文章介绍了几种在Qt中实现Word文档(.docx/.doc)读写功能的方法,包括基于QAxObject的COM接口调用、DOCX模板替换及跨平台解决方案,重点讨论... 目录1. 核心实现方式2. 基于QAxObject的COM接口调用(Windows专用)2.1 环境

使用Python将PDF表格自动提取并写入Word文档表格

《使用Python将PDF表格自动提取并写入Word文档表格》在实际办公与数据处理场景中,PDF文件里的表格往往无法直接复制到Word中,本文将介绍如何使用Python从PDF文件中提取表格数据,并将... 目录引言1. 加载 PDF 文件并准备 Word 文档2. 提取 PDF 表格并创建 Word 表格

MySQL数据目录迁移的完整过程

《MySQL数据目录迁移的完整过程》文章详细介绍了将MySQL数据目录迁移到新硬盘的整个过程,包括新硬盘挂载、创建新的数据目录、迁移数据(推荐使用两遍rsync方案)、修改MySQL配置文件和重启验证... 目录1,新硬盘挂载(如果有的话)2,创建新的 mysql 数据目录3,迁移 MySQL 数据(推荐两

Python数据验证神器Pydantic库的使用和实践中的避坑指南

《Python数据验证神器Pydantic库的使用和实践中的避坑指南》Pydantic是一个用于数据验证和设置的库,可以显著简化API接口开发,文章通过一个实际案例,展示了Pydantic如何在生产环... 目录1️⃣ 崩溃时刻:当你的API接口又双叒崩了!2️⃣ 神兵天降:3行代码解决验证难题3️⃣ 深度

MySQL快速复制一张表的四种核心方法(包括表结构和数据)

《MySQL快速复制一张表的四种核心方法(包括表结构和数据)》本文详细介绍了四种复制MySQL表(结构+数据)的方法,并对每种方法进行了对比分析,适用于不同场景和数据量的复制需求,特别是针对超大表(1... 目录一、mysql 复制表(结构+数据)的 4 种核心方法(面试结构化回答)方法 1:CREATE

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra