分析器BS4写入fi

2024-10-01 00:19:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我在学习python,有一项任务。 我不得不将刮片结果写入文件,但有一些错误。结果文件中的每个字符串都是“None”,但是当我将这些结果输出到控制台时,它就正常工作了

函数中的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)

Tags: 文件inselfforstringlenrangefind
1条回答
网友
1楼 · 发布于 2024-10-01 00:19:58

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中,我们使用

for item in self.searchP:
     print(items.string)

相关问题 更多 >