1 सवाल: पार्सर BS4 फाइल करने के लिए लिखें

पर बनाया गया सवाल Wed, May 8, 2019 12:00 AM

मैं अजगर का अध्ययन कर रहा हूं और एक कार्य है। मुझे फाइल करने के लिए स्क्रैपिंग परिणाम लिखना होगा, लेकिन कुछ त्रुटियां हैं। परिणाम फ़ाइल में प्रत्येक स्ट्रिंग "कोई नहीं" के रूप में है, लेकिन जब मैं इस तरह के परिणाम को सांत्वना देने के लिए इसे सही काम करता है।

फंक्शन टेकटेक्

में
def takeText(self,nameArticleFile):
        x=input("Введите слово по которому нужно отыскать статьи\n")
        for titlesearch in self.soup1.findAll('item'):
            if titlesearch.find(string=re.compile(x)):
                self.zagsearch.append(titlesearch.find(string=re.compile(x)))
                self.urlsearch.append(titlesearch.find('guid',text=True))
        print('Статьи в которых есть вхождение слова:')
        for s in range(len(self.zagsearch)):
            print(self.zagsearch[s].string)
        print('Ссылки на статьи в которых найдено слово:')
        for a in range(len(self.urlsearch)):
            print(self.urlsearch[a].string)
        for b in range(len(self.urlsearch)):
            self.response1=urllib.request.urlopen(self.urlsearch[b].string)
            self.soup2=BeautifulSoup(self.response1.read())
            with open(nameArticleFile, "w") as file:
                for i in self.soup2.findAll('p'):
                    file.write(str(self.searchP.append(i)))
            for i in range(len(self.searchP)):
                print(self.searchP[i].string)
    
0
  1. 0600350991100100135035062 हमेशा append() पर वापस लौटें - इसलिए None में file.write(....append(i)) फाइल में देना है। आपको None लिखना है, न कि i। इसके अलावा अगर आप append(i) प्रदर्शित करते हैं और आप परिणाम देखते हैं तो फाइल print(self.searchP[i].string)
    से करें।
    2019-05-08 19: 30: 35Z
    1 उत्तर                              1                         

    write(self.searchP[i].string) हमेशा append() को लौटाता है, इसलिए None का अर्थ है write(...append())

    आपको 06003509911001001350350 (या write(None) पर लिखना है, i पर लिखना है

    i.string)

    append(i) के बजाय पायथन में हम

    का उपयोग करते हैं
    with open(nameArticleFile, "w") as file:
        for i in self.soup2.findAll('p'):
    
            # display and write `i`
            print(i.string)
            file.write(i.string)
    
            # add to list
            self.searchP.append(i)
    
            # or  display and write last item from list
            #print(self.searchP[-1].string)
            #file.write(self.searchP[-1].string)
    
        
    0
    2019-05-08 19: 37: 38Z
    range(len(self.searchP))
स्रोत रखा गया यहाँ