Python 抓取一个html表格,如何在一个类似的结构信息

Python 抓取一个html表格,如何在一个类似的结构信息,python,python-2.7,web-scraping,beautifulsoup,Python,Python 2.7,Web Scraping,Beautifulsoup,我正在尝试创建一个如下所示的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!

我正在尝试创建一个如下所示的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.]
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!
我使用漂亮的汤,我的代码包括:

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文件中,结果是一列如下所示:

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.]
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&amp;tid=50510&amp;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>]

不要使用
soup.findAll(“字段集”)
在字段集中使用
soup.findAll(“tr”)

html=''' <fieldset><legend><a href="misc.php?action=viewratings&amp;tid=50510&amp;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> '''

from bs4 import BeautifulSoup
import csv

soup=BeautifulSoup(html)
five = soup.findAll("tr")
for i in five:
    with open('some.csv', 'a') as f:
        writer = csv.writer(f)

        writer.writerow([j.text for j in  i.findAll('td')])

#output

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!
html=''”
26-6-2014 11:02因果报应+4 你真幸运 26-6-2014 10:34因果报应+3 伟大的 26-6-2014 06:50因果报应+5 谢谢 ''' 从bs4导入BeautifulSoup 导入csv soup=BeautifulSoup(html) 五=汤。芬达尔(“tr”) 对于我来说,五分之一: 以open('some.csv','a')作为f: writer=csv.writer(f) writer.writerow([i.findAll('td')中j的j.text) #输出 thew 26-6-2014 11:02因果报应+4幸运你 用户34 26-6-2014 10:34业力+3伟大! 上帝保佑26-6-2014 06:50因果报应+5谢谢!
如果您能在这里给出
five
的输出,就更容易理解了。谢谢您的回复!我刚刚添加了您要求的内容。看起来这会起作用,但仅在这个特定的示例中使用这三个用户?我需要对数千个html文件执行此操作,其中来自不同用户的反馈将不同。代码完全独立于数据。如果html文件具有相同的结构,这应该会对任何文件上的任何数量的用户放弃评论。啊,我明白了,谢谢!如上所述,它在打印时肯定有效。但是,当我尝试将其写入csv时,输出仅为“thew”,即第一个用户的名称——所有内容都被忽略。我已经更新了上面的问题来解释!Sundar,我怎么能把文本转换成csv呢?请查看更新的问题。我希望你能帮忙!谢谢你的帮助,Sundar!