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

通常情况下我们可以使用 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.mzph.cn/pingmian/26236.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

携手华为,微想科技正式启动“720云”鸿蒙原生应用开发

5月31日&#xff0c;"创兴汇聚&#xff0c;干帆领航”——“走进华为”系列活动北京站&#xff0c;在华为北京研究所举行&#xff0c;华为战略研究院、华为开发者联盟承办。微想科技创始人兼CEO刘博受邀出席此次会议&#xff0c;并在鸿蒙原生系统启动仪式上与华为达成合作…

如何判断代理IP池的优劣

判断代理IP池的优劣主要从以下几个方面入手&#xff1a; 1.IP池数量&#xff1a;IP池的大小直接关系到代理IP池的使用频次和可靠性&#xff0c;通常情况下&#xff0c;IP池的大小越大&#xff0c;代理IP池的可靠性就越高。 2.IP池质量&#xff1a;IP池的质量关系到代理IP池的使…

福派斯猫粮,让猫咪更健康,你做到了吗?

猫粮的选择对于猫咪的健康和幸福有着极大的影响。猫粮是猫咪日常摄入营养的主要来源&#xff0c;因此选择一款适合猫咪的猫粮非常重要。福派斯猫粮凭借其卓越的品质和全面的营养价值&#xff0c;成为了许多宠物主人的首选&#xff0c;尤其是福派斯旗下的福派斯三文鱼猫粮、福派…

轻兔推荐 —— Snipaste

via&#xff1a;轻兔推荐 - https://app.lighttools.net/ 简介 Snipaste 是一个简单但强大的截图工具&#xff0c;支持Windows和Mac&#xff0c;允许用户快速截图并进行编辑&#xff0c;如添加标注、文字和马赛克。 - 它还具有贴图功能&#xff0c;可以将截图或剪贴板内容固定…

文件IOoooo

1.1 文件路径 文件路径分为两种&#xff1a; 1、绝对路径&#xff1a;以C:、D:等盘符开头的&#xff0c;就是我们所说的绝对路径&#xff0c;根据它可以直接找到文件的具体位置。 2、相对路径&#xff1a;需要先指定一个目录作为基准目录&#xff0c;从基准目录出发&#xf…

音视频封装的总接

1、封装涉及的基本概念 2、音视频封装基础3、封装总结 4、PS/TS码流封装层次图

redis 主从同步时,是同步主节点的缓存积压区的数据,还是同步主节点的aof文件

Redis 的主从同步&#xff08;replication&#xff09;是同步主节点的数据到从节点上&#xff0c;但它既不是直接同步 AOF 文件&#xff0c;也不是同步缓存积压区。 当一个 Redis 从节点启动并连接到主节点时&#xff0c;会发生以下步骤&#xff1a; 同步数据集&#xff1a;从…

Web前端开发缺点:深入剖析与反思

Web前端开发缺点&#xff1a;深入剖析与反思 在数字化浪潮中&#xff0c;Web前端开发作为构建互联网世界的基石之一&#xff0c;其重要性不言而喻。然而&#xff0c;正如任何技术都有其局限性一样&#xff0c;Web前端开发也存在一些不容忽视的缺点。本文将从四个方面、五个方面…

【Linux】如何查看网卡驱动

如何查看网卡驱动&#xff1f; 要查看机器的网卡驱动程序&#xff0c;您可以使用以下几种方法。这些方法可以帮助您查找并识别当前正在使用的网卡驱动程序。 方法1&#xff1a;使用 ethtool ethtool 可以显示网络接口的详细信息&#xff0c;包括驱动程序名称。 sudo ethtoo…

MyBatis总结(2)- MyBatis实现原理(三)

核心配置 JavaBeanMapper.xml&#xff08;sql映射&#xff09; 作用 JavaBeanMapper.xml实现&#xff1a; 用来干什么&#xff1f; 定义Sql语句映射。相对照JDBC的实现&#xff0c;是将原本的Sql代码提取出来&#xff0c;最终根据映射关系执行Sql操作。 好处&#xff1f; 解…

判断电势高低的方法_电势的公式介绍

电势是描述电场中某点电势能的物理量&#xff0c;与电场中的电荷无关&#xff0c;仅与电场本身和所选的零电势点有关。以下是判断电势高低的方法和电势的公式介绍&#xff1a; 判断电势高低的方法 根据电场线的方向判断&#xff1a; 正电荷在电场中受到的电场力方向是电场线的…

海外盲盒小程序背后的技术支撑与实现

海外盲盒小程序之所以能够迅速崛起并受到全球消费者的喜爱&#xff0c;除了其独特的商业模式和营销策略外&#xff0c;更重要的是其背后的技术支撑和实现。本文将深入探讨海外盲盒小程序背后的技术支撑及其实现方式。 一、多语言与本地化技术 为了满足全球不同地区消费者的需…

python调用天气接口并解析json数据

""" 使用python调用请求 使用pip install requests安装requests """ import jsonimport requestsresp requests.get(urlhttps://apis.tianapi.com/tianqi/index,params{key: 4a9ce7c2516a223ewe323dwe323ew323eq1, city: 101020100, type: 1} )…

使用mysqldump迁移MySQL数据

将Windows系统中MySQL数据导出到其他系统中MySQL数据库中 1.导出数据 进入MySQL安装目录的bin目录下&#xff0c;打开dos窗口执行以下命令 --single-transaction 参数表示不锁表 1.1 指定部分表导出 mysqldump -u用户名 -p密码 数据库名 表1 表2 表3 --single-transact…

Android之实现两段颜色样式不同的文字进行富文本方式的显示

一、使用SpannableString进行拼接 1、显示例子 前面文字显示红色&#xff0c;后面显示白色&#xff0c;显示在一个TextView中&#xff0c;可以自动换行 发送人姓名: 发送信息内容2、TextView <TextViewandroid:id"id/tv_msg"android:layout_width"wrap_c…

设备驱动程序

目录 设备驱动程序的基本概念 设备驱动程序的基本功能 设备驱动程序的工作过程 设备驱动程序的功能 1. 设备独立性 2.缓冲管理 3. 中断处理 4. 设备共享 设备驱动程序的架构 设备驱动程序的实现方法 1. 独立设备驱动程序 优点&#xff1a; 缺点&#xff1a; 示例&…

Apifox的使用

1、了解Apifox的工具特点和使用方法 2、使用Apifox辅助生成接口文档&#xff0c;尝试使用Apifox进行其他前后端调试。 Apifox IDEA 插件快速上手 | Apifox 帮助文档 Apifox IDEA 插件来啦&#xff01;是真的超好用&#xff01;_哔哩哔哩_bilibili 21分钟学会Apifox_哔哩哔哩…

Matlab进阶绘图第59期—棒棒糖图

​棒棒糖图本质上是柱状图的一种变体。 棒棒糖图通过在每根柱子顶端添加圆点&#xff0c;以表示数据之间的相对位置。 此外&#xff0c;一般还会对每根棒棒糖按数值大小进行排序&#xff0c;从而更加方便阅读。 本文利用自制的Lollipop工具进行棒棒糖图的绘制&#xff0c;先…

素数同余规律猜想

结论 对于正整数 a , b , k a,b,k a,b,k&#xff0c;若 a a a 和 b b b 均为素数且 a ≠ b a \neq b ab。则有 a k ≡ a k b − 1 ( % b ) a^k \equiv a^{kb-1} (\%b) ak≡akb−1(%b)。 证明 不会&#xff0c;正在证。

专业编程显示器明基RD280U,赋能开发者共创科技新纪元

距离ChatGPT问世仅有17个月&#xff0c;OpenAI就推出了颠覆生产力的GPT-4o。这是整个智能时代的一次再进化&#xff0c;GPT-4o不但能实时处理文本、音频和图像&#xff0c;甚至能在232毫秒内实时响应音频输入&#xff0c;几乎与真人对话无异。 当人们惊叹于这项“充满人性”的…