关于python:BeautifulSoup Webscraping Text溢出单元格并转到下一个单元格。我想将信息保存在一个单元格中,而不是分开保存

BeautifulSoup Webscraping Text overflows the cell and goes to next one. I want to keep the information in one cell instead of separated

这里的初学者试图把它记下来。我觉得目前解决方案非常简单,因为我尝试了很多事情,但没有一个奏效。我整天都在尝试此操作,但无济于事。我尝试在堆栈上查找,但找不到答案。

我正在尝试从spoofee.com抓取日期文字和交易记录

格式为"日期",然后是有关交易的"信息"。我试图这样做,但由于文本溢出到下一个单元格而惨败。尝试了一堆解决方案,但没有一个奏效。首先,我要写交易的日期和标题。一旦能够完成该操作,便会执行该信息。

这是我的密码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as bs

html_url = 'http://www.spoofee.com/'

uClient = uReq(html_url)

page_html = uClient.read()

uClient.close()

page_soup = bs(page_html, 'html.parser')

titles = page_soup.findAll("td",{"class":"dealtitle"})
date = page_soup.findAll("td",{"class":"date"})

filename ="spoofeedeals.csv"
f = open(filename,"w")

headers ="Date and Deals\
"

f.write(headers)

for day in date:
    f.write('\
'
+day.text+'\
\
'
)
    for title in titles:
        f.write(title.text+'\
'
)

f.close()

这就是我得到的。

csv

中的结果数据

如何获取日期在一个单元格中而不在接下来的两个单元格中?我试过了get_text(separator = ","),但这没用。当我尝试其他解决方案时,其余的信息标题都搞砸了。这是第一步,然后是我从该页面提取更多数据的步骤2,但我遇到了麻烦。

我有一种简单的解决方案,可以自己解决这个问题。

谢谢您的帮助。


您从该页面检索的日期的格式为

2018年4月19日,星期四

它包含两个逗号。大多数将输入转换为csv的软件都会在这些逗号上分割输入记录,以产生单独的单元格。您有几个选择。

  • 您可以简单地从日期起就删除逗号;这将是最简单的,并且日期仍然可读。
  • 当您调用该软件(例如csv的pandas)以生成csv文件时,可以将分隔符设置为逗号以外的其他字符,以便忽略日期中的逗号。但是,如果您需要添加其他字段,则必须记住要使用相同的特殊字符来分隔字段。并且您使用的特殊字符必须是一个不会出现在数据其他位置的字符。我的最爱之一是\\'| \\'。