簡體   English   中英

python類可以訪問其自己的對象的屬性嗎?

[英]can a python class access attribute of its own object?

我正在嘗試創建蜘蛛而不指定特定的網址。 我想創建蜘蛛對象,從對象中提取URL,然后將其用作我的allowed_domainsstart_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_domainsstart_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM