私はpythonと美しいスープを使用して、以下のタグのコンテンツ部分を抽出しようとしています:
<meta property="og:title" content="Super Fun Event 1" />
<meta property="og:url" content="http://superfunevents.com/events/super-fun-event-1/" />
BeautifulSoupにページをうまくロードして他のものを見つけるようにしています(これはソースに隠されているidタグから記事IDを取得します)が、htmlを検索してこれらのビットを見つける正しい方法がわかりません、 findとfindAllのバリエーションを試しましたが、役に立ちませんでした。コードは現在、URLのリストを反復処理します...
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#importing the libraries
from urllib import urlopen
from bs4 import BeautifulSoup
def get_data(page_no):
webpage = urlopen('http://superfunevents.com/?p=' + str(i)).read()
soup = BeautifulSoup(webpage, "lxml")
for tag in soup.find_all("article") :
id = tag.get('id')
print id
# the hard part that doesn't work - I know this example is well off the mark!
title = soup.find("og:title", "content")
print (title.get_text())
url = soup.find("og:url", "content")
print (url.get_text())
# end of problem
for i in range (1,100):
get_data(i)
誰かが私が素晴らしいことだと思うog:titleとog:contentを見つけるためにビットをソートするのを手伝うことができるなら!
find()
の最初の引数としてmeta
タグ名を指定します。次に、キーワード引数を使用して特定の属性を確認します。
title = soup.find("meta", property="og:title")
url = soup.find("meta", property="og:url")
print(title["content"] if title else "No meta title given")
print(url["content"] if url else "No meta url given")
ここでのif
/else
チェックは、タイトルおよびurlメタプロパティが常に存在することがわかっている場合はオプションです。
これを試して :
soup = BeautifulSoup(webpage)
for tag in soup.find_all("meta"):
if tag.get("property", None) == "og:title":
print tag.get("content", None)
Elif tag.get("property", None) == "og:url":
print tag.get("content", None)