Я пытаюсь передать переменную screen_name
моему пауку, потому что это имя экрана будет меняться каждый раз. (конечная цель - запустить несколько пауков с разными именами экранов)
Я инициализирую, как это
process.crawl(TwitterSpider(screen_name="realDonaldTrump"))
Однако я получаю следующую ошибку.
spider = cls (* args, ** kwargs) Ошибка типа: init () отсутствует 1 обязательный
позиционный аргумент: 'screen_name'
import scrapy
from scrapy.crawler import CrawlerProcess
class TwitterSpider(scrapy.Spider):
name = "twitter_friends"
def __init__(self, screen_name, *args, **kwargs):
self.usernames = []
self.screen_name = screen_name
super().__init__(**kwargs)
def start_requests(self):
base_url = "https://mobile.twitter.com"
urls = [
base_url + '/{screen_name}/following'.format(screen_name=self.screen_name,
]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def closed(self, spider):
print("spider closed")
def parse(self, response):
pass
process = CrawlerProcess({
'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)'
})
process.crawl(TwitterSpider(screen_name="realDonaldTrump"))
process.start() # the script will block here until the crawling is finished
Это не вопрос о том, как запустить его из строки cmd, а только из питона