运行我的爬虫我可以看到它按原样获取数据但是当它将数据打印到csv文件时,它会在一行中打印出来。我很擅长在python中使用类,所以在我的代码中可能会出现很多错误,我假设这些错误看到了不同的例子。因此,在这一点上,我希望修复单行打印并使其创建新行。任何建议都将受到高度赞赏。
import csv
import requests
from lxml import html
class wiseowl:
def __init__(self,start_url):
self.start_url=start_url
self.storage=[]
def crawl(self):
self.get_link(self.start_url)
def get_link(self,link):
response=requests.get(link)
tree=html.fromstring(response.text)
titles=tree.xpath("//p[@class='woVideoListDefaultSeriesTitle']")
for title in titles:
name=title.xpath(".//a/text()")[0]
urls=title.xpath(".//a/@href")[0]
Docs=(name,urls)
self.storage.append(Docs)
def writing_csv(self):
with open("Wiseowl.csv","w",newline="") as f:
writer=csv.writer(f)
writer.writerow(["Title","Link"])
writer.writerow(self.storage)
def __str__(self):
return "{}".format(self.storage)
crawler=wiseowl("http://www.wiseowl.co.uk/videos/")
crawler.crawl()
crawler.writing_csv()
for item in crawler.storage:
print(item)
答案 0 :(得分:1)
如果我理解正确,您已经在代码中找到了逐行打印crawler.storage
的答案。
只需将方法writing_csv
更改为:
def writing_csv(self):
with open("Wiseowl.csv","w",newline="") as f:
writer=csv.writer(f)
writer.writerow(["Title","Link"])
for item in self.storage:
writer.writerow(item)
当您使用writer.writerow(self.storage)
时,方法writerow
会将self.storage
视为一个字符串。这就是为什么它将它作为一行存储在文件中。
注意我使用python3运行代码。