使用lxml或???从网页中提取信息

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

标签: python regex web-scraping lxml urllib

目前我有以下代码:

# Import der Pythonmodule
import urllib
import lxml
import mechanize
import sys

# Verbindung zum URL aufbauen
try:
    URL = urllib.urlopen("http://...")

except:
    print "Verbindung zum URL fehlgeschlagen"
    sys.exit(0)

# Quellcode des URL lesen 
URL_quellcode = URL.readlines()

# Verbindung zum URL beenden
URL.close()

到目前为止,我可以打开并阅读URL的来源。现在我想通过各种可能性来提取一些东西。

可能性1:      < p class =“author-name”>某些名称< / p>
可能性2:      rel =“author”>某些名称< / a>

我想提取作者姓名。我的逻辑如下:

检查所有类的“作者姓名” - 如果找到,请在标签内给我文本。如果没有找到,请检查“rel =”author“ - 如果找到则给我标签内的文字。如果没有打印”没有找到作者“

我该怎么做?我可以使用正则表达式,lxml或其他任何东西。什么是最优雅的方式?

1 个答案:

答案 0 :(得分:3)

使用BeautifulSoup

from bs4 import BeautifulSoup

document_a = """
<html>
    <body>
        <p class="author-name">Some Name</p>
    </body>
</html>
"""

document_b = """
<html>
    <body>
        <p rel="author-name">Some Name</p>
    </body>
</html>
"""
def get_author(document):
    soup = BeautifulSoup(document_a)
    p = soup.find(class_="author-name")
    if not p:
        p = soup.find(rel="author-name")
        if not p:
            return "No Author Found"
    return p.text

print "author in first document:", get_author(document_a)
print "author in second document:", get_author(document_b)

结果:

author in first document: Some Name
author in second document: Some Name