[英]can a python class access attribute of its own object?
我正在嘗試創建蜘蛛而不指定特定的網址。 我想創建蜘蛛對象,從對象中提取URL,然后將其用作我的allowed_domains
和start_urls
,我想做類似的事情(請注意MySpiderObj
...我只是把那個表達式放在那里,因為我想提取信息來自MySpider
類的對象:
from scrapy.settings import default_settings
from selenium import webdriver
from urlparse import urlparse
import csv
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from scrapy.item import Item
from scrapy.spider import BaseSpider
from scrapy import log
default_settings.DEPTH_LIMIT = 3
class MySpider(CrawlSpider):
def __init__(self,url):
self.x=url
name = "my_spider"
allowed_domains = [MySpiderObj.x]
start_urls = [MySpiderObj.x]
rules = [Rule(SgmlLinkExtractor(), callback='parse_item', follow=True)]
def parse_item(self,response):
self.log('A response from %s just arrived!' % response.url)
我該怎么做呢? 謝謝
您應該將所有相互依賴的初始化都移至構造函數,並將MySpiderObj
更改為self
你想上課的工廠嗎? 然后,您應該使用type
函數來生成具有所需屬性的類。
但就您的情況而言,正如其他人提到的那樣,您應該能夠使allowed_domains
和start_urls
屬性成為實例屬性:
class MySpider(CrawlSpider):名稱=“ my_spider”
def __init__(self, params):
self.allowed_domains = [extract_domains(params)]
self.start_urls = [extract_start_urls(params)]
另外請注意start_requests
方法-它可能更適合您的需求
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.