【问题标题】:BeautifulSoup Error in file saving .txtBeautifulSoup 文件保存时出错 .txt
【发布时间】:2016-07-02 20:42:18
【问题描述】:
from bs4 import BeautifulSoup
import requests
import os


url = "http://nos.nl/artikel/2093082-steeds-meer-nekklachten-bij-kinderen-door-gebruik-tablets.html"
r  = requests.get(url)
soup = BeautifulSoup(r.content.decode('utf-8', 'ignore'))
data = soup.find_all("article", {"class": "article"})

with open("data1.txt", "wb") as file:
   content=‘utf-8’
for item in data:
    content+='''{}\n{}\n\n{}\n{}'''.format( item.contents[0].find_all("time", {"datetime": "2016-03-16T09:50:30+0100"})[0].text,
                                            item.contents[0].find_all("a", {"class": "link-grey"})[0].text,
                                            item.contents[0].find_all("img", {"class": "media-full"})[0],
                                            item.contents[1].find_all("div", {"class": "article_textwrap"})[0].text,
                                            )
with open("data1.txt".format(file_name), "wb") as file:
    file.write(content)

最近解决了一个 utf/Unicode 问题,但现在它没有将其保存为 .txt 文件,也根本没有保存它。我需要做什么?

【问题讨论】:

  • A:您正在打开文件以写入字节,然后尝试向其写入字符串,B:"data1.txt".format(file_name)file_name 的作用并不大,而且它没有定义所以我真的很困惑你想要做什么......
  • 你认为"data1.txt".format(file_name) 在做什么?还有你为什么要以wb 模式打开?
  • 我正在尝试将所有 item.contents 中的内容保存到 .txt 文件中。 (stackoverflow.com/questions/36039919/…)

标签: python save beautifulsoup


【解决方案1】:

如果您想将数据以 UTF-8 格式写入文件,请尝试codecs.open,例如:

from bs4 import BeautifulSoup
import requests
import os
import codecs


url = "http://nos.nl/artikel/2093082-steeds-meer-nekklachten-bij-kinderen-door-gebruik-tablets.html"
r  = requests.get(url)
soup = BeautifulSoup(r.content)
data = soup.find_all("article", {"class": "article"})

with codecs.open("data1.txt", "wb", "utf-8") as filen:
    for item in data:
        filen.write(item.contents[0].find_all("time", {"datetime": "2016-03-16T09:50:30+0100"})[0].get_text())
        filen.write('\n')
        filen.write(item.contents[0].find_all("a", {"class": "link-grey"})[0].get_text())
        filen.write('\n\n')
        filen.write(item.contents[0].find_all("img", {"class": "media-full"})[0].get_text())
        filen.write('\n')
        filen.write(item.contents[1].find_all("div", {"class": "article_textwrap"})[0].get_text())

我不确定filen.write(item.contents[0].find_all("img", {"class": "media-full"})[0]),因为它为我返回了一个Tag 实例。

【讨论】:

  • 将其放入 .txt 文件的最佳方法是什么?
  • 它实际上是一个“.txt”文件(UTF-8 Unicode 文本)。如果您希望它是 ASCII,则必须将那些   (\xa0) 字符替换为 ASCII 字符。看看:stackoverflow.com/questions/19508442/…
猜你喜欢
  • 1970-01-01
  • 2016-07-02
  • 1970-01-01
  • 1970-01-01
  • 2018-11-12
  • 2017-09-10
  • 1970-01-01
  • 2019-07-28
  • 1970-01-01
相关资源
最近更新 更多