我正在学习蟒蛇,有一个任务。我必须将抓取结果写入文件,但其中有一些错误。结果文件中的每个字符串都是"None",但是当我将这样的结果输出到console时,它可以正常工作。
在函数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)
发布于 2019-05-09 03:37:38
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)
https://stackoverflow.com/questions/56044821
复制相似问题