दिलचस्प पोस्ट
एंड्रॉइड में फेस डिटेक्शन? मैं अपने मूल कंटेनर के साथ एसटीवीपी पैमाने कैसे बना सकता हूं? कैसे रनटाइम पर असेंबली खोज पथ में फ़ोल्डर जोड़ने के लिए .net? JQuery का उपयोग कर फ़ॉर्म सबमिट करें चरित्र पुनर्निर्माण और ओसीआर के लिए भरना MySQL में ROW_NUMBER () बिटवादर ऑपरेटरों और "एंडियननेस" विशाल बास्करी में जीएचसी के साथ संकलित लघु हास्केल कार्यक्रम HTTPS और SSL3_GET_SERVER_CERTIFICATE: प्रमाणपत्र विफल हो गया, CA ठीक है पृष्ठभूमि में एंड्रॉइड ऐप कैसे चलाना है? .htaccess रीडायरेक्ट को रीडायरेक्ट रूट यूआरएल को उपनिर्देशिका में डालें मैं एंड्रॉइड स्टूडियो में एक प्रोजेक्ट को कैसे निर्यात करूं? iPhone कीबोर्ड कवर UITextField सभी दूरस्थ जीआईटी शाखाओं को स्थानीय शाखाओं के रूप में ट्रैक करें पायथन के साथ ऑडियो चलाएं

सुंदर सूप के साथ एक विशेषता मान एक्स्ट्रेक्ट करना

मैं एक वेबपेज पर एक विशिष्ट "इनपुट" टैग में एक एकल "मान" विशेषता की सामग्री को निकालने की कोशिश कर रहा हूं मैं निम्नलिखित कोड का उपयोग करता हूं:

import urllib f = urllib.urlopen("http://58.68.130.147") s = f.read() f.close() from BeautifulSoup import BeautifulStoneSoup soup = BeautifulStoneSoup(s) inputTag = soup.findAll(attrs={"name" : "stainfo"}) output = inputTag['value'] print str(output) 

मुझे एक TypeError मिलता है: सूची सूचकांक पूर्णांक होना चाहिए, नहीं str

भले ही सुंदरसूप प्रलेखन से मैं समझता हूं कि तार कोई समस्या नहीं होनी चाहिए … लेकिन IA कोई विशेषज्ञ नहीं है और मुझे गलत समझा जा सकता है।

कोई सुझाव काफी सराहना की है! अग्रिम में धन्यवाद।

वेब के समाधान से एकत्रित समाधान "सुंदर सूप के साथ एक विशेषता मान एक्स्ट्रेक्ट करना"

.findAll() सभी पाया तत्वों की सूची देता है, इसलिए:

 inputTag = soup.findAll(attrs={"name" : "stainfo"}) 

inputTag एक सूची है (शायद केवल एक तत्व युक्त) आप क्या चाहते हैं पर निर्भर करता है या तो आपको करना चाहिए:

  output = inputTag[0]['value'] 

या। .find() विधि जो केवल एक (पहले) पाया तत्व का उपयोग करें:

  inputTag = soup.find(attrs={"name": "stainfo"}) output = inputTag['value'] 

यदि आप उपर्युक्त स्रोत से विशेषताओं के एकाधिक मूल्यों को प्राप्त करना चाहते हैं, तो आप सब कुछ प्राप्त करने के लिए findAll और एक सूची समझ का उपयोग कर सकते हैं:

 import urllib f = urllib.urlopen("http://58.68.130.147") s = f.read() f.close() from BeautifulSoup import BeautifulStoneSoup soup = BeautifulStoneSoup(s) inputTags = soup.findAll(attrs={"name" : "stainfo"}) ### You may be able to do findAll("input", attrs={"name" : "stainfo"}) output = [x["stainfo"] for x in inputTags] print output ### This will print a list of the values. 

मैं वास्तव में आपको सुझाव देता हूं कि आप इस बात के साथ जाने के लिए समय बचाने का तरीका मानते हैं कि आपको पता है कि किस प्रकार के टैग के पास उन विशेषताओं हैं

मान लीजिए एक टैग xyz में attitube नाम "staininfo" है ..

 full_tag = soup.findAll("xyz") 

और मैं समझ नहीं पाया कि full_tag एक सूची है

 for each_tag in full_tag: staininfo_attrb_value = each_tag["staininfo"] print staininfo_attrb_value 

इस प्रकार आप सभी टैग्स के लिए स्टाइइनफ़ोन के सभी attrb मान प्राप्त कर सकते हैं xyz

Python 3.x , बस अपने टैग ऑब्जेक्ट पर get(attr_name) का उपयोग करें जिसे आप find_all का उपयोग find_all :

 xmlData = None with open('conf//test1.xml', 'r') as xmlFile: xmlData = xmlFile.read() xmlDecoded = xmlData xmlSoup = BeautifulSoup(xmlData, 'html.parser') repElemList = xmlSoup.find_all('repeatingelement') for repElem in repElemList: print("Processing repElem...") repElemID = repElem.get('id') repElemName = repElem.get('name') print("Attribute id = %s" % repElemID) print("Attribute name = %s" % repElemName) 

XML फ़ाइल conf//test1.xml खिलाफ जो दिखता है:

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <root> <singleElement> <subElementX>XYZ</subElementX> </singleElement> <repeatingElement id="11" name="Joe"/> <repeatingElement id="12" name="Mary"/> </root> 

प्रिंट:

 Processing repElem... Attribute id = 11 Attribute name = Joe Processing repElem... Attribute id = 12 Attribute name = Mary 

आप इसका उपयोग भी कर सकते हैं:

 import requests from bs4 import BeautifulSoup import csv url = "http://58.68.130.147/" r = requests.get(url) data = r.text soup = BeautifulSoup(data, "html.parser") get_details = soup.find_all("input", attrs={"name":"stainfo"}) for val in get_details: get_val = val["value"] print(get_val)