1 Вопрос: Parser BS4 записать в файл

вопрос создан в Wed, May 8, 2019 12:00 AM

Я изучаю питона и у меня есть задание. Я должен записать результаты очистки в файл, но есть некоторые ошибки. Каждая строка в файле результатов имеет вид «Нет», но когда я выводю такие результаты на консоль, она работает правильно.

В функции takeText

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. append() всегда возвращать None - поэтому file.write(....append(i)) должен дать None в файле. Вы должны написать i, а не append(i). Кроме того, если вы отобразите print(self.searchP[i].string) и увидите результаты, то сделайте то же самое с файлом write(self.searchP[i].string)
    2019-05-08 19: 30: 35Z
1 ответ                              1                         

append() всегда возвращает None, поэтому write(...append()) означает 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)

В Python вместо range(len(self.searchP)) мы используем

for item in self.searchP:
     print(items.string)
    
0
2019-05-08 19: 37: 38Z
источник размещен Вот