我决定做这个小项目来学习如何使用 mechanize。现在它会转到urbandictionary,在搜索表单中填写单词“skid”,然后按提交并打印出HTML。
我想要它做的是找到第一个定义并将其打印出来。我到底该怎么做呢?
这是我到目前为止的源代码:
import mechanize
br = mechanize.Browser()
page = br.open("http://www.urbandictionary.com/")
br.select_form(nr=0)
br["term"] = "skid"
br.submit()
print br.response().read()
这是存储定义的位置:
<div class="definition">Canadian definition: Commonly used to refer to someone who stopped evolving, and bathing, during the 80's hair band era. Generally can be found wearing AC/DC muscle shirts, leather jackets, and sporting a <a href="/define.php?term=mullet">mullet</a>. The term "skid" is in part derived from "skid row", which is both a band enjoyed by those the term refers to, as well as their address. See also <a href="/define.php?term=white%20trash">white trash</a> and <a href="/define.php?term=trailer%20park%20trash">trailer park trash</a></div><div class="example">The skid next door got drunk and beat up his old lady.</div>
您可以看到它存储在 div 定义中。我知道如何在源代码中搜索 div,但我不知道如何获取标签之间的所有内容然后显示它。
最佳答案
我认为正则表达式足以完成此任务(根据您的描述)。试试这个代码:
import mechanize, re
br = mechanize.Browser()
page = br.open("http://www.urbandictionary.com/")
br.select_form(nr=0)
br["term"] = "skid"
br.submit()
source = br.response().read()
regex = "<div class=\"definition\">(.+?)</div>"
pattern = re.compile(regex)
r=re.findall(pattern,source)
print r[0]
这将显示标签之间的内容(没有示例部分,但它们完全相同),但我不知道您想如何处理此内容中的标签。如果你想要他们在那里,那就这样吧。或者,如果您想删除它们,可以使用类似 re.replace() 的方法。
关于python - 如何显示网站上的句子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18406243/