Python findall正则表达式问题

时间:2014-10-17 06:23:13

标签: python regex findall

所以,基本上我的主要问题来自findall的正则表达式部分。我试图通过网络搜索一些信息,但我无法为我的生活获得正确的数据。我认为(\ S + \ S +)是正则表达式部分,我将从<li></li>的HTML代码之间的任何部分中提取,但相反,我得到了打印(数据)的空列表。我意识到每个列表代码部分中的每个单词都需要一个\ S +,那么我该如何处理呢?另外,我如何使用列表代码部分发布HTML的每个不同部分?

INPUT:只是网站。

  • Mikky Ekko - 时间
  • 输出:在这种情况下,它应该是专辑标题(即Mikky Ekko - 时间)

    import urllib.request
    from re import findall
    url = "http://rnbxclusive.se"
    
    response = urllib.request.urlopen(url)
    html = response.read()
    htmlStr = str(html)
    
    data = findall("<li>(\S+ \S+)</li>.*", htmlStr)
    print(data)
    for item in data:
       print(item)
    

    2 个答案:

    答案 0 :(得分:0)

    <li>([^><]*)<\/li>
    

    试试这个。这将提供<li>标记的所有内容。 flag.See演示。

    http://regex101.com/r/dZ1vT6/55

    答案 1 :(得分:0)

    使用lxml

    import lxml.html
    
    doc = lxml.html.fromstring(response.read())
    for li in doc.findall('.//li'):
        print li.text_content()