【发布时间】:2014-07-10 00:10:24
【问题描述】:
我正在尝试解析/打印来自 twitter 的一些数据。我有一个打印推文的代码,但是当我尝试将相同的代码应用于用户名时,它似乎不起作用。我想在不使用 twitter API 的情况下做到这一点。
这是我打印推文的内容
def main():
try:
sourceCode = opener.open('https://twitter.com/search?f=realtime&q='\
+keyWord+'&src=hash').read()
splitSource = re.findall(r'<p class="js-tweet-text tweet-text">(.*?)</p>', sourceCode)
print len(splitSource)
print splitSource
for item in splitSource:
print '\n _____________________\n'
print re.sub(r'<.*?>','',item)
except Exception, e:
print str(e)
print 'error in main try'
time.sleep(555)
main()
现在要打印用户名信息,我将“opener”更改为“browser”,但它仍会找到并打开页面,所以这不是问题。反正我不觉得。
def main():
try:
pageSource = browser.open('https://twitter.com/search?q='\
+firstName+'%20'+lastName+'&src=hash&mode=users').read()
splitSource = re.findall(r'<p class="bio ">(.*?)</p>', pageSource)
for item in splitSource:
print '\n'
print re.sub(r'<.*?>','',item)
except Exception, e:
print str(e)
print 'error in main try'
main()
它会打印源代码。问题似乎出在:
splitSource = re.findall(r'<p class="bio ">(.*?)</p>', pageSource)
这似乎根本找不到任何东西。这是我试图从中提取信息的来源的副本。
<div class="content">
<div class="stream-item-header">
<a class="account-group js-user-profile-link" href="/BarackObama" >
<img class="avatar js-action-profile-avatar " src="https://pbs.twimg.com/profile_images/451007105391022080/iu1f7brY_normal.png" alt="" data-user-id="813286"/>
<strong class="fullname js-action-profile-name">Barack Obama</strong><span class="Icon Icon--verified Icon--small"><span class="u-isHiddenVisually">Verified account</span></span>
<span class="username js-action-profile-name">@BarackObama</span>
</a>
</div>
<p class="bio ">
This account is run by Organizing for Action staff. Tweets from the President are signed -bo.
</p>
</div>
我觉得这个来源中发生了一些事情,阻止我获取生物信息。间距可能吗?我不知道。
【问题讨论】:
-
使用 Twitter API,真的。 (这可能也违反了他们的 ToS。)
-
...或者如果您必须解析 HTML,BeautifulSoup 会提供帮助:crummy.com/software/BeautifulSoup/bs4/doc
-
@RabidGorilla 不是不能强制正则表达式解析 HTML,而是 HTML 不是“常规语言”,所以“正则表达式”无法解析所有有效的 HTML 代码。
-
好的,大家不要再否决这个问题了。它问得很好,有代码,示例数据并且格式相对较好。即使在我链接的问题中,人们也承认有时使用正则表达式来解析 HTML 是可以的,在某些情况下..