python re.findall返回空列表

时间:2018-09-22 01:15:55

标签: python

我已经编写了以下代码,以从网站的源代码中获取文本字符串。如前所述,第一个findall可以正常工作,而第二个则返回一个空列表。我试图从c代码下面的html中获取名称(Kendall Easley)。

for j in links:
    req = urllib2.Request(j, None, headers)
    response = urllib2.urlopen(req)
    page = response.read() #open source code
    org = re.findall(r'(?<=<meta content=").*?(?=" 
    property="og:title")', page)
    print(org) #works
    name = re.findall(r'(?<=ic_only=64" title=").*(?="><img alt=)', page)
    print(name) #prints empty list

<a data-popup="{&quot;type&quot;:&quot;profile&quot;}" href="/149855/profile/10525304/display_profile?pic_only=64" title="Kendall Easley"><img alt="Profile Photo" class="user-profile-pic profile_pic_64" height="64" src="https://orgsync.com/assets/icons/accounts/profile_pic_blank_64.gif" width="64" /></a>

2 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解您的问题,但这会从该html字符串中提取名称。希望对您有帮助

>>> import re
>>> 
>>> html_string = """<a data-popup="{&quot;type&quot;:&quot;profile&quot;}"href="/149855/profile/10525304/display_profile?pic_only=64" title="Kendall Easley"><img alt="Profile Photo" class="user-profile-pic profile_pic_64" height="64" src="https://orgsync.com/assets/icons/accounts/profile_pic_blank_64.gif" width="64" /></a>"""
>>> 
>>> name = re.findall(r".*title=\"(\w+\s+\w+)", html_string)
>>> 
>>> name
['Kendall Easley']

编辑*请注意,我在html字符串周围放置了三引号

答案 1 :(得分:-1)

在第一个re.findall()之后,您已经阅读了文本,并且标记位于文本的结尾。

您必须对文本执行seek(0)或类似操作(我正在读取txt文件,这样对我有用),然后再次执行re.findall。否则,它将尝试从文本末尾搜索,当然那里什么也没有。

(ps我是python的新手(请阅读4周))