【问题标题】:How to fix python returning multiple lines in a .csv document instead of one?如何修复python在.csv文档中返回多行而不是一行?
【发布时间】:2019-09-03 13:44:49
【问题描述】:

我正在尝试从一个学校项目的公共论坛中抓取数据,但每次我运行代码时,生成的 .csv 文件都会显示文本变量的多行,而不仅仅是一行。


from bs4 import BeautifulSoup as soup
from urllib.request import urlopen as uReq

my_url = 'https://www.emimino.cz/diskuse/1ivf-repromeda-56566/'

uClient = uReq(my_url)
page_soup = soup(uClient.read(),"html.parser")
uClient.close()

containers = page_soup.findAll("div",{"class":"discussion_post"})


out_filename = "Repromeda.csv"
headers = "text,user_name,date \n"

f = open(out_filename, "w")
f.write(headers)

for container in containers:
    text1 = container.div.p
    text = text1.text

    user_container = container.findAll("span",{"class":"user_category"})
    user_id = user_container[0].text

    date_container = container.findAll("span",{"class":"date"})
    date = date_container[1].text

    print("text: " + text + "\n" )
    print("user_id: " + user_id + "\n")
    print("date: " + date + "\n")
    # writes the dataset to file
    f.write(text.replace(",", "|") + ", " + user_id + ", " + date + "\n")

f.close()

理想情况下,我尝试为每个数据条目创建一行(即一行中的文本、用户 ID、日期),但我为一个文本条目获得多行,而对于 user_id 和日期条目只有一行。

this is the actual output

this is the expected output

【问题讨论】:

  • 你能发布实际输出和预期吗?
  • @Sureshmani 是的,完成

标签: web-scraping beautifulsoup jupyter-notebook urllib


【解决方案1】:

只需将新行替换为空白字符串即可。

for container in containers:
   text1 = container.div.p
   text = text1.text.replace('\n', ' ')

【讨论】:

    猜你喜欢
    • 2021-10-23
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 2012-09-28
    • 1970-01-01
    相关资源
    最近更新 更多