gpt4 book ai didi

python - 为什么此 RegEx 找不到任何数据?

转载 作者:太空宇宙 更新时间:2023-11-04 08:09:53 27 4
gpt4 key购买 nike

我正在尝试解析/打印来自 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>

我觉得这个来源中发生了一些事情,阻止我获取生物信息。间距可以吗?我不知道。

最佳答案

As usual, don't use regex to parse HTML.

实际上,您的 '<p class="bio ">' 之间有一个换行符和你的 '(.*?)'这意味着你需要使用 re.DOTALL匹配所以 .将包括换行符。你也可以做 '<p class="bio ">\s*(.*?)\s*</p>' , 自 \s将匹配换行符(如果存在)。这也将提供更清洁的输出。

import re

pat = re.compile(r'<p class="bio ">\s*(.*?)\s*</p>')
pat.findall(src) # src is your last codeblock from above
## OUTPUT:
['This account is run by Organizing for Action staff. Tweets from the President are signed -bo.']

如果您想使用 BeautifulSoup 选项,Python3 代码如下:

from bs4 import BeautifulSoup

soup = BeautifulSoup(src) # src is your last codeblock from your question
[p_bio.contents.strip() for p_bio in soup('p' class_='bio ')]
## OUTPUT:
['This account is run by Organizing for Action staff. Tweets from the President are signed -bo.']

关于python - 为什么此 RegEx 找不到任何数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24665610/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com