Я пытаюсь удалить статьи определенного тега, например, «машинное обучение» здесь, в Python 2.7.У меня есть следующий код:
import scrapy
import codecs
import json
from datetime import datetime
from datetime import timedelta
import os
def writeTofile(fileName,text):
with codecs.open(fileName,'w','utf-8') as outfile:
outfile.write(text)
class MediumPost(scrapy.Spider):
name='medium_scrapper'
handle_httpstatus_list = [401,400]
autothrottle_enabled=True
def start_requests(self):
start_urls = ['https://medium.com/tag/'+self.tagSlug.strip("'")+'/archive/']
print(start_urls)
#Header and cookie information can be got from the Network Tab in Developer Tools
cookie = {'mhj': 'd4c630604c57a104af8bc98218fb3430145',
'nj': '1',
'ko': '1:J0mnan1t5jlHypyliL8GAY1WNfDvtqZBgmBDr+7STp2QSwyWUz6',
'pi': '233',
'mt': '-874'}
header = {'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'}
startDate=datetime.strptime(self.start_date,"%Y%m%d")
endDate=datetime.strptime(self.end_date,"%Y%m%d")
delta=endDate-startDate
print(delta)
for i in range(delta.days + 1):
d=datetime.strftime(startDate+timedelta(days=i),'%Y/%m/%d')
for url in start_urls:
print(url+d)
yield scrapy.Request(url+d, method="GET",headers=header,cookies=cookie,callback=self.parse,meta={'reqDate':d})
def parse(self,response):
response_data=response.text
response_split=response_data.split("while(1);</x>")
response_data=response_split[1]
date_post=response.meta['reqDate']
date_post=date_post.replace("/","")
directory=datetime.now().strftime("%Y%m%d")
if not os.path.exists(directory):
os.makedirs(directory)
writeTofile(directory+"//"+self.tagSlug.replace("-","").strip("'")+"Tag"+date_post+".json",response_data)
В сообщении говорится, что:
scrapy.core.engine] DEBUG: Crawled (200) <GET https://medium.com/tag/machine-learning/archive/2015/07/13> (referer: None)
NotImplementedError: Обратный вызов MediumPost.parse не определен
Но я неоднократнополучая ошибки вроде:
current.result = callback(current.result, *args, **kw)
File "/home/mkol/anaconda2/lib/python2.7/site-packages/scrapy/spiders/__init__.py", line 90, in parse
raise NotImplementedError('{}.parse callback is not defined'.format(self.__class__.__name__))
NotImplementedError('{}.parse callback is not defined'.format(self.__class__.__name__))
Когда я пытаюсь разместить def parse выше def start_requests, я получаю ошибку отступа.
Поскольку я новичок, я не могу понять, где ошибка?