1 Trình phân tích cú pháp BS4 ghi vào tệp

câu hỏi được tạo ra tại Wed, May 8, 2019 12:00 AM

Tôi đang nghiên cứu trăn và có một nhiệm vụ. Tôi phải viết kết quả nạo vào hồ sơ, nhưng có một số lỗi. Mỗi chuỗi trong tệp kết quả là "Không", nhưng khi tôi xuất kết quả như vậy sang bàn điều khiển thì nó hoạt động đúng.

Trong chức năng 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() luôn trả về None - vì vậy file.write(....append(i)) phải cung cấp None trong tệp. Bạn phải viết i, không phải append(i). Bên cạnh đó, nếu bạn hiển thị print(self.searchP[i].string) và bạn thấy kết quả thì làm tương tự với tệp write(self.searchP[i].string)
    2019-05-08 19: 30: 35Z
1 Câu trả lời                              1                         

append() luôn trả về None vì vậy write(...append()) có nghĩa là write(None)

Bạn phải viết i (hoặc i.string), không phải 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)

Trong Python thay vì range(len(self.searchP)) chúng tôi sử dụng

for item in self.searchP:
     print(items.string)
    
0
2019-05-08 19: 37: 38Z
nguồn đặt đây