求教关于抓取内容的思路

2016-04-04 16:13:48 +08:00
 omg21
<table width="722" height="166" border="1">
<tr>
<td id=1>C 和指针 Pointers On C</td>
<td id=2>2008-04</td>
<td id=3>Kenneth A.Reek 、 徐波</td>
<td id=4>¥ 54.70</td>
</tr>
<tr>
<td id=1>嗨翻 C 语言</td>
<td id=2>2013-09</td>
<td id=3>格里菲思 (David Griffiths)</td>
<td id=4>¥ 84.00</td>
</tr>
<tr>
<td id=1>C 语言入门经典(第 5 版)</td>
<td id=2>2013-11</td>
<td id=3>霍尔顿 (Ivor Horton)</td>
<td id=4>¥ 45.30</td>
</tr>
</table>

如果要抓取这样的代码,把内容输出到文件,输出成下面的格式,思路是怎样的?输出的格式我会做,这个不用讲。
C 和指针 Pointers On C 2008-04 Kenneth A.Reek 、 徐波 ¥ 54.70
嗨翻 C 语言 2013-09 格里菲思 ¥ 84.00
C 语言入门经典(第 5 版) 2013-11 霍尔顿 (Ivor Horton) ¥ 45.30

难到就是用正则“<tr><td id=1>”取出书名,用“</td><td id=2>”取出日期吗?
str1 = []
str1 = re.compile(r'<tr><td id=1> (.*?)</td>',re.DOTALL).findall(data)
这样把书名存到 str1 里了,那后边再取日期,人名,价格等存到哪里呢?
2298 次点击
所在节点    Python
7 条回复
darkbread
2016-04-04 18:47:37 +08:00
str2 , str3 , str4
omg21
2016-04-04 18:57:13 +08:00
@darkbread 这样做会不会出现错位的现象呢?
loalj
2016-04-04 21:07:49 +08:00
这种情况直接解析 dom 树吧,遍历每个 tr ,再从 tr 里边取出书名,日期什么的。
caspartse
2016-04-05 00:15:05 +08:00
可以以每本书为单位,匹配信息,然后存储到字典里。
amustart
2016-04-05 12:48:06 +08:00
有种东西叫做 HTML 解析器
ytmsdy
2016-04-05 16:57:55 +08:00
BeautifulSoup
oncew
2016-04-09 21:33:35 +08:00
用 BeautifulSOUP select 选择器,几秒钟就搞定了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/268480

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX