目前我有以下代码:
# 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或其他任何东西。什么是最优雅的方式?
答案 0 :(得分:3)
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