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文件时,可以将分隔符设置为逗号以外的其他字符,以便忽略日期中的逗号。但是,如果您需要添加其他字段,则必须记住要使用相同的特殊字符来分隔字段。并且您使用的特殊字符必须是一个不会出现在数据其他位置的字符。我的最爱之一是\\'| \\'。