Je veux implémenter des arguments dans l'araignée pour l'url. Par exemple:scrapy python prendre args
scrapy crawl test -a url="https://example.com"
Et après que je veux prendre automatiquement les start_urls et le convertir automatiquement en domain_allowed. Ex:
domain_allowed = ['example.com']
Et après que je veux juste passer le mot Exemple au pipeline mysql où il crée la table en utilisant simplement le mot Exemple du domain_allowed
C'est ce que J'ai pour l'instant:
class Spider(BaseSpider):
name = 'seeker'
def __init__(self, *args, **kwargs):
urls = kwargs.pop('urls', [])
if urls:
self.start_urls = urls.split(',')
self.logger.info(self.start_urls)
# take the arg "urls" and convert it to allowed_domains
url = "".join(urls)
self.allowed_domains = [url.split('/')[-1]]
super(SeekerSpider, self).__init__(*args, **kwargs)
# i have to use "domain" here and not inside the function parge_page or __init__
domain = domain_allowed.replace(".", "_")
# create folder with the domain name
def parse_page(self, response):
...
Fondamentalement, je besoin d'utiliser le self.allowed_dom Ains en dehors de la fonction ... C'est mon problème ... la variable domaine ne le prend pas.
Et cela fait partie de mon pipelines.py
class MySQLPipeline(object):
def __init__(self, *args, **kwargs):
self.connect = pymysql.connect(...)
self.cursor = self.connect.cursor()
# print "Input the name of the table: " <-- its commented
# tablename = raw_input(" ") <-- its commented
date = datetime.datetime.now().strftime("%y_%m_%d_%H_%M")
self.tablename = kwargs.pop('tbl', '')
self.newname = self.tablename + "_" + date
print self.newname
# create a different way to create a tablename
# importing the "allowed_domain" and strip it
# and give tablename
Les pipelines i ai fait de cette way..but ne est pas bon ... je veux prendre le allowed_domain de l'araignée et passe ici et le diviser pour ne prendre que le nom du domaine sans .com ou .Whatever
Nous vous remercions à l'avance
oui mais il passera à travers chaque demande ... donc fondamentalement il va le créer 100 fois .... je dois le faire dehors ... et si je le fais ** def __init__ (self, spider) ** à la place ... en fait j'ai déjà essayé et ça ne marche pas ... je ne peux pas faire spider.allowed_domain ... ça n'existe pas – Omega