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>
我按照上面这样写。。抓不到任何内容求助 展开
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>
我按照上面这样写。。抓不到任何内容求助 展开
1个回答
展开全部
看了你的正则表达式。思路基本上是正则的。不过有些小问题。我建议你初学的时候分两步搜索。
先找到所有的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,
这里(?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]:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询