Python怎么抓取表格 正则怎么写?

我想抓取一个网页里面的表格内容HTML:<trclass="rowodd"><td>114.80.136.112</td><td>7780</td><td>上海</td>... 我想抓取一个网页里面的表格内容
HTML:

<tr class=" rowodd">
<td>114.80.136.112</td>
<td>7780</td>
<td>上海 </td>
<td id="tablekit-table-6-cell-9">
<div class="graph"><strong class="bar" style="width: 77%; background:#dddd00;"><span></span></strong></div>
</td>
<td>2014-07-15 05:55:16</td>
</tr>
<tr class=" roweven">
<td>211.151.59.251</td>
<td>80</td>
<td>北京 </td>
<td id="tablekit-table-6-cell-7">
<div class="graph"><strong class="bar" style="width: 101%; background:#00dd00;"><span></span></strong></div>
</td>
<td>2014-07-15 05:58:25</td>
</tr>
<pre>
#-*- coding: utf-8 -*

import re
import urllib

htmlSource = urllib.urlopen("http://cn-proxy.com/").read()
linksList = re.findall(r'''<tbody><tr class="([sS]*?)"><td>([sS]*?)</td><td>([sS]*?)</td></tr></tbody>''',htmlSource)
for link in linksList:
print link
</pre>

我按照上面这样写。。抓不到任何内容求助
展开
 我来答
bdwisyou7d
推荐于2017-11-26 · TA获得超过1.3万个赞
知道大有可为答主
回答量:3774
采纳率:81%
帮助的人:1061万
展开全部

看了你的正则表达式。思路基本上是正则的。不过有些小问题。我建议你初学的时候分两步搜索。


先找到所有的tr,再在tr里找td

exp1 = re.compile("(?isu)<tr[^>]*>(.*?)</tr>")
exp2 = re.compile("(?isu)<td[^>]*>(.*?)</td>")
htmlSource = urllib.urlopen("http://cn-proxy.com/").read()
for row in exp1.findall(htmlSource):
   print '==============='
   for col in exp2.findall(row):
       print col,
   print

这里(?isu)意思就是,要搜索时,包含回车换行,包含汉字,包含空格。

你多试试。找一个正则表达式验证工具,比如kodos。 然后看看python自带的那个正则表达式教程就可以了。

更多追问追答
追问
这是采集出来的内容

61.174.9.96 8080 浙江 金华
</st...

我只想要 61.174.9.96 8080 其他的不要。是不是还要在多写几行? 感觉正则好难的样子
追答
呵,只要2行啊。你那你弄一个变量,判断,如果是前两个就要。后面全不要不就成了?
将for col in exp2.findall(row): 改成
for col in exp2.findall(row)[:2]:
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式