0
크롤러 실행 데이터를 가져 오는 것으로 볼 수 있지만 데이터를 CSV 파일로 인쇄 할 때 한 줄로 인쇄합니다. 나는 파이썬에서 클래스로 작업하는 것이 매우 새로울 것이므로, 코드에 여러 가지 실수가있을 수 있으므로 다른 예제를 가상으로 작성했다. 그래서이 시점에서 한 줄 인쇄를 수정하고 새로운 줄을 만들어 내려고합니다. 모든 제안은 매우 감사하겠습니다. 내가 제대로 이해 한 경우긁힌 데이터가 한 줄에 csv로 인쇄되는 경우
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)
감사합니다 Nurzhan, 멋진 솔루션입니다. 그것은 완벽하게 작동합니다. 잠시 동안 당신의 대답을 받아 들일 것입니다. 한 가지 더 알아야 할 점은 : self.name과 self.urls를 사용하여 get_link 메서드에서 "dunstr"메서드 대신 "self.storage"를 사용하는 대신 "name"과 "urls"를 사용하고 싶었던가? – SIM
@ SMth80,'__str__' 메소드에서'self.name'과'self.urls'를 사용하여'name'과'urls' 변수에 접근하려면, 생성자 메소드에서 인스턴스 변수로 선언해야합니다 당신의'wiseowl 클래스''__init__'. 예를 들어,'self.name = ""'와'self.urls = ""'. 그러나 이름과 URL 쌍의 컬렉션을 다루기 때문에 현재의 솔루션이 좋습니다. 이름과 URL 쌍 (튜플 인)을'storage' 목록에 넣은 다음 거기에서 액세스합니다. 희망을 당신의 질문에 대답했다. – Nurjan
감사합니다 조입니다. 몇 줄의 답변으로 내 년의 노력이 절약되었습니다. – SIM