【发布时间】:2014-09-01 17:08:18
【问题描述】:
我正在尝试抓取一个看起来像这样的 html 表格:
Recent ratings:
thew 26-6-2014 11:02 Karma +4 lucky you
user34 26-6-2014 10:34 Karma +3 great!
godspeed 26-6-2014 06:50 Karma +5 thanks!
[Report to Mod.]
我使用 Beautiful Soup,我的代码包括:
five = soup.findAll("fieldset")
for html in five:
text5 = BeautifulSoup(str(html).strip()).get_text().encode("utf-8").replace(" ", "")
karmas.append(text5.split("Recent Ratings")[1].split("[Report to Mod.]")[0].strip())
结果,在 csv 文件中,有一列如下所示:
thew
ᅡᅠᅡᅠ26-6-2014 11:02ᅡᅠᅡᅠKarmaᅡᅠᅡᅠ+4
ᅡᅠᅡᅠlucky you
user34
ᅡᅠᅡᅠ26-6-2014 10:34ᅡᅠᅡᅠKarmaᅡᅠᅡᅠ+3
ᅡᅠᅡᅠgreat!
godspeed
ᅡᅠᅡᅠ26-6-2014 06:50ᅡᅠᅡᅠKarmaᅡᅠᅡᅠ+5
ᅡᅠᅡᅠthanks!
如何在类似于表格的结构中分离信息?
我尝试添加.replace("\n", ""),结果是一行中的所有信息:
thewᅡᅠᅡᅠ26-6-2014 11:02ᅡᅠᅡᅠKarmaᅡᅠᅡᅠ+4ᅡᅠᅡᅠlucky youuser34ᅡᅠᅡᅠ26-6-2014 10:34ᅡᅠᅡᅠKarmaᅡᅠᅡᅠ+3ᅡᅠᅡᅠgreat!godspeedᅡᅠᅡᅠ26-6-2014 06:50ᅡᅠᅡᅠKarmaᅡᅠᅡᅠ+5ᅡᅠᅡᅠthanks!
这是我打印“五”时得到的结果。
[<fieldset><legend><a href="misc.php?action=viewratings&tid=50510&pid=502926" title="View Rating Log">Recent Ratings</a></legend><br/>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td><a href="viewpro.php?uid=21445" target="_blank">thew</a></td>
<td> 26-6-2014 11:02</td><td> Karma</td><td> <b>+4</b></td>
<td> lucky you</td></tr>
<tr><td><a href="viewpro.php?uid=43867" target="_blank">user34</a></td>
<td> 26-6-2014 10:34</td><td> Karma</td><td> <b>+3</b></td>
<td> great!</td></tr>
<tr><td><a href="viewpro.php?uid=68709" target="_blank">godspeed</a></td>
<td> 26-6-2014 06:50</td><td> Karma</td><td> <b>+5</b></td>
<td> thanks!</td></tr>
</table>
</fieldset>]
下面的答案在我打印输出时有效,但在我将其写入 csv 时无效。摘自我的代码:
five = soup.findAll("fieldset")
karmas = []
for i in five:
for j in i.findAll('td'):
somevar = j.text
print somevar
karmas.append(somevar.strip())
csvfile = open('test.csv', 'ab')
writer = csv.writer(csvfile)
for karma in zip(karmas):
writer.writerow([karma])
csvfile.close()
#output print somevar
thew
26-6-2014 11:02
Karma
+4
lucky you
user34
26-6-2014 10:34
Karma
+3
great!
godspeed
26-6-2014 06:50
Karma
+5
thanks!
# output in csv
thew
【问题讨论】:
-
如果能在这里给出
five的输出会更容易理解。 -
感谢您的回复!我刚刚添加了您要求的内容。
标签: python python-2.7 web-scraping beautifulsoup