Я хочу обработать несколько онлайн веб-страниц в файлы CSV. Чтобы сделать это, я создал websccraper с scrapy, который работает, выполняя файл python. Он запускается путем выполнения файла python.
python3 find_clubs.py
Я попытался добавить args / * args в качестве параметра для класса find_clubs, который не работал.
from twisted.internet import reactor
import scrapy
import argparse
from scrapy.crawler import CrawlerRunner
from scrapy.utils.log import configure_logging
import csv
class find_clubs(scrapy.Spider):
name = "find_clubs"
def start_requests(self):
urls = [
'http://www.footballsquads.co.uk/netherl/2017-2018/nethere.htm',
]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
links = response.xpath('//div[@id="main"]/*/*/@href').getall()
clubs = response.xpath('//div[@id="main"]/*/*/text()').getall()
record_list = [ list(item) for item in list(zip(clubs, links)) ]
with open("ERE1718_clubs.csv", "w") as fp:
writer = csv.writer(fp)
writer.writerows(record_list)
configure_logging({'LOG_FORMAT': '%(levelname)s: %(message)s'})
runner = CrawlerRunner()
d = runner.crawl(find_clubs)
d.addBoth(lambda _: reactor.stop())
reactor.run()
Теперь я бы хотел передать аргументы скребку. Например:
python3 find_clubs.py --URL=netherlands.htm --YEAR=1819
Я нашел скребок из файла в документации о скрапе. Другие программисты, похоже, решили эту проблему, изменив часть init . У меня нет этой функции, но скрипт работает нормально.
Очевидно, я хочу выполнить скребок рекурсивно для всех доступных соревнований и лет.