दिलचस्प पोस्ट
वैरिएबल द्वारा जावास्क्रिप्ट ओब्जेक्ट की सेट करें जावास्क्रिप्ट का उपयोग कर स्ट्रिंग में कोई संख्या कैसे प्राप्त करें? मैं एएसपी.नेट में स्ट्रिंग से एचटीएमएल टैग कैसे पट्टी कर सकता हूं? notifyDataSetChanged () सूची को ताज़ा करें और शीर्ष पर वापस कूदता है स्क्रॉल करें Excel में मिलीसेकंड प्रदर्शित करें पुश अधिसूचना बैज iPhone बढ़ाना छवि में डुबकीकृत BufferedInputStream एक फ़ाइल को एक रिपॉजिटरी से प्राप्त करें रूबी में बेस 64 एन्कोडेड स्ट्रिंग में अजीब \ n StringBuilder का उपयोग कब करना है? रूबी में === बनाम == NSFetchedResultsController के साथ predicate विभिन्न NSManagedObjectContext से विलय परिवर्तनों की उपेक्षा क्या मुझे स्ट्रटस 2 दृश्य परत में डेटाबेस रिकॉर्ड प्राप्त करना चाहिए? Socket.io के साथ PHP का उपयोग करना कैसे pinterest.com की पूर्ण डिवा स्टैकिंग लेआउट को दोहराने के लिए

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

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

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 कोई विशेषज्ञ नहीं है और मुझे गलत समझा जा सकता है।

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

Solutions Collecting From Web of "सुंदर सूप के साथ एक विशेषता मान एक्स्ट्रेक्ट करना"

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