2016-04-21 9 views
12

मैं नीचे दिए गए टैग की सामग्री के भाग को निकालने के लिए अजगर और सुंदर सूप का उपयोग करने के कोशिश कर रहा हूँ के साथ मेटा टैग सामग्री संपत्ति प्राप्त करें अन्य सामान ढूंढें (यह स्रोत में छिपी हुई आईडी टैग से आलेख आईडी भी पकड़ता है), लेकिन मुझे एचटीएमएल को खोजने और इन बिट्स को खोजने का सही तरीका नहीं पता है, मैंने खोजने और खोजने के विविधता की कोशिश की है। । वर्तमान में यूआरएल की एक सूची से अधिक कोड दोहराता ...BeautifulSoup और अजगर

#!/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) 

किसी को भी मदद कर सकते हैं, तो मुझे थोड़ा सॉर्ट ओग को खोजने के लिए: शीर्षक और ओग: सामग्री है कि शानदार होगी!

उत्तर

11

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 यहाँ चेकों वैकल्पिक यदि आप जानते हैं कि शीर्षक और यूआरएल मेटा गुण हमेशा मौजूद होगा होगा।

+0

कोई अंतर्निहित प्राप्त सामग्री के लिए, और वापस आने डिफ़ॉल्ट वहाँ है? –

+0

@ क्रिस्टोफ्रौससी यूप, यह बिल्कुल जवाब में दिखाया गया है। साथ ही, आप 'soup.find (" मेटा ", संपत्ति =" og: title ", content = True) का उपयोग कर 'सामग्री' विशेषता उपस्थिति को मजबूत कर सकते हैं। धन्यवाद। – alecxe

1

इस प्रयास करें:

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) 
0

क्या मैं एक फॉलो अप प्रश्न पूछ सकता हूं?

मैं <meta name='keywords' content=''></> बीएस 4 के साथ प्राप्त करने की कोशिश कर रहा हूं, लेकिन इसके बजाय एक लाइन परिणाम प्राप्त करने के लिए मुझे पूरा मेटा ब्लॉक मिलता है। क्या आपको पता है क्यों?

पार्स साइट: https://www.bilibili.com/video/av6862467/#page=4

लक्ष्य ब्लॉक:

<meta name="keywords" content="【SNH48】20161028 原创公演 TeamX《梦想的旗帜》首演 全场 CUT,娱乐,明星,SNH48-TeamX应援会,,哔哩哔哩,Bilibili,B站,弹幕" /> 

कोड:

metatags = soup.find_all('meta',attrs={'name':'keywords'})                
for tag in metatags: 
    print(tag) 
संबंधित मुद्दे