我是Python新手。编码器通过给我一些代码来解析HTML来帮助我。我无法理解它是如何工作的。我的想法是从中获取(使用?)HTML funtweets.com/random并且基本上在早上告诉我一个有趣的笑话作为闹钟。它目前提取页面上的所有笑话,我只想要一个。修改代码或详细解释代码如何工作对我有帮助。这是代码:
import re
import urllib2
page = urllib2.urlopen("http://www.m.funtweets.com/random").read()
user = re.compile(r'<span>@</span>(\w+)')
text = re.compile(r"</b></a> (\w.*)")
user_lst =[match.group(1) for match in re.finditer(user, page)]
text_lst =[match.group(1) for match in re.finditer(text, page)]
for _user, _text in zip(user_lst, text_lst):
print '@{0}\n{1}\n'.format(_user,_text)
答案 0 :(得分:0)
user3530608你想要一场比赛,而不是通过比赛进行迭代?
这是开始使用python正则表达式的好方法。
这是对您的代码的一个小调整。我没有在我面前测试python,所以如果你遇到任何问题,请告诉我。
import re
import urllib2
page = urllib2.urlopen("http://www.m.funtweets.com/random").read()
umatch = re.search(r"<span>@</span>(\w+)", page)
user = umatch.group()
utext = re.search(r"</b></a> (\w.*)", page)
text = utext.group()
print '@{0}\n{1}\n'.format(user,text)
答案 1 :(得分:0)
虽然您可以通过正则表达式解析html,但我强烈建议您使用一些python第三个lib。
我最喜欢的htmlparser lib是PyQuery,你可以将它用作jquery: 比如
from pyquery import PyQuery as pq
page=pq(url='http://www.m.funtweets.com/random')
users=page("#user_id")
a_first=page("a:first")
...
您可以在此处找到它:https://pypi.python.org/pypi/pyquery
只需:
pip install PyQuery
or
easy_install PyQuery
你会喜欢它!
另一个htmlparse-lib:https://pypi.python.org/pypi/beautifulsoup4/4.3.2
答案 2 :(得分:0)
如果有人有兴趣从没有html标签的html中获取一个笑话,这里是最终代码:
import re
import urllib2
def remove_html_tags(text):
pattern = re.compile(r'</b></a>')
return pattern.sub('', text)
page = urllib2.urlopen("http://www.m.funtweets.com/random").read()
umatch = re.search(r"<span>@</span>(\w+)", page)
user = umatch.group()
utext = re.search(r"</b></a> (\w.*)", page)
text = utext.group()
print remove_html_tags(text)