我试图从网页上的源代码中提取一些信息,而我却无法弄清楚如何去做。 部分源代码如下:
<th>Model #:</th>
<td>1561496564</td>
</tr>
<tr>
我想从&#34; Model#:&#34;开始并一直向上到td&gt;。从那里,我可以删除任何不是数字的东西来获得1561496564。
我无法做到:
modelMatch = re.search('Model[^\n]*', contents)
因为实际的数字在下一行。我也不能做任何不是/,d或&gt;的事情。我以为我可以做[^ \ ^ n ^:^&lt; ^ / ^ t ^ h ^&gt; ^ r] *,但这看起来有点乱。我想知道是否有更好的方式。
对于正则表达式,是否有一种简单的方法可以说,提取直到达到&#34; tr&#34;
的特定短语非常感谢。
答案 0 :(得分:1)
您可以通过传递re.MULTILINE
参数启用重新排列的多线模式。
但是,对于从网页中提取数据等任务,我建议您使用lxml,pyquery,Beautifulsoup等工具。这些方法会更加简单和优雅。
这是一个使用pyquery模块的例子:
In [1]: import pyquery
In [2]: s = '''<th>Model #:</th>
...: <td>1561496564</td>
...: </tr>'''
In [3]: pyquery.PyQuery(s).find('td').text()
Out[3]: '1561496564'
答案 1 :(得分:0)
试试这个:
$ wget.exe 192.168.109.128:9200
--2015-12-25 13:39:12-- http://192.168.109.128:9200/
Connecting to 192.168.109.128:9200... connected.
HTTP request sent, awaiting response... 200 OK
Length: 328 [application/json]
Saving to: ‘index.html.1’
index.html.1 100%[====================================================>] 328 --.-KB/s in 0.009s
2015-12-25 13:39:12 (37.1 KB/s) - ‘index.html.1’ saved [328/328]
Try curl command
$ curl.exe http://192.168.109.128:9200
{
"status" : 200,
"name" : "Kali Node",
"cluster_name" : "kali",
"version" : {
"number" : "1.7.1",
"build_hash" : "b88f43fc40b0bcd7f173a1f9ee2e97816de80b19",
"build_timestamp" : "2015-07-29T09:54:16Z",
"build_snapshot" : false,
"lucene_version" : "4.10.4"
},
"tagline" : "You Know, for Search"
}
<强>输出:强>
import re
content = """<th>Model #:</th>
<td>1561496564</td>
</tr>
<tr>"""
re.search(r".*>(\w+\ #\:)<.*>(\d+)<", content.replace('\n', '')).groups()