使用Python从HTML中提取文本字段?

0 投票
5 回答
2089 浏览
提问于 2025-04-15 15:00

从这个HTML文件中提取数据,最好的方法是什么?我想把公司电话号码、公司名称和电子邮件放进MySQL数据库,电话号码作为主键。

</tr><tr class="tableRowOdd">
                <td>"JSC company inc. 00" &lt;email@email.com&gt;</td>
                <td>1231231234</td>
            </tr><tr class="tableRowEven">
                <td>"JSC company inc. 01" &lt;email01@email.com&gt;</td>
                <td>234234234234234</td>
            </tr><tr class="tableRowOdd">
                <td>"JSC company inc. 02" &lt;email2@email.com&gt;</td>
                <td>32423234234</td>
            </tr><tr class="tableRowEven">
                <td>"JSC company inc. 03" &lt;email3@email.com&gt;</td>
                <td>23423424324</td>
            </tr><tr class="tableRowOdd">
                <td>"JSC company inc. 04" &lt;email4@email.com&gt;</td>
                <td>234234232324244</td>
            </tr>   <tr>

5 个回答

1

在解析数据方面,我强烈推荐使用Beautiful Soup这个工具。

如果你想把文本放进数据库里,我建议使用一个好的Python ORM(对象关系映射)。我最推荐的是Django里的ORM。如果你能用Django的话,不仅能用ORM,还能通过网页界面浏览你的数据库;你甚至可以通过网页直接输入数据到数据库里。

如果你不能使用Django,我推荐SQLAlchemy

祝你好运!

1

使用 lxml,你可以像用 jQuery 一样轻松地完成这件事。

from lxml import html

doc = html.parse('test.html').getroot()
for row in doc.cssselect('tr'):
    name, phone_number = row.cssselect('td')[:2]
    print name.text_content()
    print phone_number.text_content()
6

如果你想提取数据或者处理HTML,可以看看下面的内容:

http://www.crummy.com/software/BeautifulSoup/

至于MySQL,我建议你在网上搜索一下:MySQL教程 python

撰写回答