改变刮擦输出

我有一个循环,把URLs放到我的broswer中,然后刮取它的内容,产生了这样的输出。

2PRACE,0.0014

西班牙裔,0.1556

API,0.0688

黑色,0.0510

AIAN,0.0031

白色,0.7200

代码是这样的。

f1 = open('urlz.txt','r',encoding="utf8")
ethnicity_urls = f1.readlines()
f1.close()

from urllib import request
from bs4 import BeautifulSoup
import time
import openpyxl
import pprint

for each in ethnicity_urls:
    time.sleep(1)
    scraped = request.urlopen(each)
    soup = BeautifulSoup(scraped)
    soup1 = soup.select('p')
    print(soup1)
    resultFile = open('results.csv','a')
    resultFile.write(pprint.pformat(soup1))
    resultFile.close()

我的问题很简单 但我没有找到任何工具可以帮助我解决这个问题。我想把一个含有”\n “的列表的输出改为:2PRACE,0.0014 Hispanic,0.1556 API,0.0688 Black,0.0510 AIAN,0.0031 White,0.7200。

我使用replace没有成功,因为它告诉我,我把一些元素当作一个元素来处理。我这里的方法是。

for each in ethnicity_urls:
    time.sleep(1)
    scraped = request.urlopen(each)
    soup = BeautifulSoup(scraped)
    soup1 = soup.select('p')
    soup2 = soup1.replace('\n',' ')
    print(soup2)
    resultFile = open('results.csv','a')
    resultFile.write(pprint.pformat(soup2))
    resultFile.close()

你能不能帮我找到正确的方法 在将输出结果写入csv之前进行突变? 我得到的错误信息是: AttributeError: ResultSet对象没有属性’replace’。你可能把一个元素列表当作一个单一的元素。当你想调用find()时,你是否调用了find_all()?


请看我下面的回答中的问题解决方案。谢谢大家的回答

解决方案:

soup1似乎是一个可迭代的变量,所以你不能直接调用replace.相反,你可以循环浏览souple1中的所有字符串项,然后对其中的每一个都调用replace,然后将变化的字符串保存到你的souple2变量中。就像这样。

for e in soup1:
    soup2.append(e.replace('\n',' '))

给TA打赏
共{{data.count}}人
人已打赏
解决方案

了解kubectl运行命令

2022-5-11 5:00:07

解决方案

如何使用扫描器计算出一个物品的总成本?

2022-5-11 5:00:11

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索