我如何实际将数据传递给我的蜘蛛解析,让我们说变量名或临时。
class CSpider(scrapy.Spider):
name = "s1"
allowed_domains = ["abc.com"]
temp = ""
start_urls = [
url.strip() for url in lists
]
def parse(self, response):
//How do i pass data into here, eg name, temp
提前致谢!
答案 0 :(得分:1)
如果您将temp
变量定义为类级变量,则可以通过self.temp
访问它。
如果您希望从命令行传递此内容,请参阅以下主题:
答案 1 :(得分:0)
正如 alecxe 回答的那样,您可以使用属性(类级变量)使变量或常量在类中的任何位置都可以访问,或者您也可以向方法(类的函数)parse
添加参数希望能够为来自类外部的参数赋值。
我会在这里尝试为您提供一个包含两种解决方案的代码示例。
使用属性:
class CSpider(scrapy.Spider):
name = "s1"
allowed_domains = ["abc.com"]
temp = ""
# Here is our attribute
self.number_of_days_in_a_week = 7
start_urls = [
url.strip() for url in lists
]
def parse(self, response):
# It is now used in the method
print(f"In a week, there is {self.number_of_days_in_a_week} days.")
如果需要,以下是将其作为其他参数传递的方法:
class CSpider(scrapy.Spider):
name = "s1"
allowed_domains = ["abc.com"]
temp = ""
start_urls = [
url.strip() for url in lists
]
def parse(self, what_you_want_to_pass_in):
print(f"In a week, there is {what_you_want_to_pass_in} days.")
# We create an instance of the spider
spider1 = CSpider
# Then we use it's method with an argument
spider1.parse(7)
请注意,在第二个示例中,我从您的 response
方法中取回了 parse
参数,因为它更容易显示如何传递参数。尽管如此,如果您考虑整个 Scrapy 框架,您肯定可以使用此解决方案添加外部值。