我有一堆网页文本,我想刮和导出到一个csv文件。问题是网站上的文本被分成多行,这就是beauthoulsoup阅读它的方式。当我导出到csv时,所有的文本都进入一个单元格,但是单元格有多行文本。当我试图将csv读入另一个程序时,它以一种产生无意义数据集的方式解释多行。但是在把uspi和uspi放进统一的文本输出之前,怎样才能把它变成一个问题呢?在
下面是一个简单的工作示例,演示了多行的问题(事实上,结果csv中的前几行是空白的,所以乍一看可能是空的):
import csv
import requests
from bs4 import BeautifulSoup
def main():
r = requests.get("https://www.econometricsociety.org/publications/econometrica/2017/03/01/search-yield")
soup = BeautifulSoup(r.text,"html.parser")
with open('Temp.csv', 'w', encoding='utf8', newline='') as f:
writer = csv.writer(f,delimiter=",")
abstract=soup.find("article").text
writer.writerow([abstract])
if __name__ == '__main__':
main()
更新:有一些很好的建议,但仍然不起作用。以下代码仍会在单元格中生成带有换行符的csv文件:
^{pr2}$这是另一个基于不同建议的尝试。这个结果也会在csv文件中产生一个换行符:
import csv
import requests
from bs4 import BeautifulSoup
def main():
r = requests.get("https://www.econometricsociety.org/publications/econometrica/2017/03/01/search-yield")
soup = BeautifulSoup(r.text,"html.parser")
with open('Temp.csv', 'w', encoding='utf8', newline='') as f:
writer = csv.writer(f,delimiter=",")
abstract=soup.find("article").get_text(separator=" ", strip=True)
writer.writerow([abstract])
if __name__ == '__main__':
main()
我使用了各种方法来访问你想要的文本区域,仅仅是为了教育目的(你可以使用.text来获得没有标签的文本,或者你可以使用Zroq的方法)。 但是,您可以通过以下方式将其中的每一个写入到文件中,例如
^{pr2}$将
abstract = ...
行改为:它将使用separator参数分隔每一行(在本例中,它将用一个空格分隔字符串)。在
最终对我有用的解决方案非常简单:
这样可以消除所有的断线。在
相关问题 更多 >
编程相关推荐