scrapy 2.3 蜘蛛爬取参数
2021-06-02 11:13 更新
蜘蛛可以接受改变其行为的论据。spider参数的一些常见用途是定义起始URL或将爬行限制在站点的某些部分,但它们可以用于配置spider的任何功能。
蜘蛛参数通过 crawl
命令使用 -a 选项。例如::
scrapy crawl myspider -a category=electronics
蜘蛛可以在它们的 __init__ 方法::
import scrapy
class MySpider(scrapy.Spider):
name = 'myspider'
def __init__(self, category=None, *args, **kwargs):
super(MySpider, self).__init__(*args, **kwargs)
self.start_urls = [f'http://www.example.com/categories/{category}']
# ...
默认值 __init__ 方法将获取任何spider参数,并将其作为属性复制到spider。上面的例子也可以写如下:
import scrapy
class MySpider(scrapy.Spider):
name = 'myspider'
def start_requests(self):
yield scrapy.Request(f'http://www.example.com/categories/{self.category}')
请记住,spider参数只是字符串。蜘蛛本身不会进行任何解析。如果你要设置 start_urls 属性来自命令行,您必须使用类似的 ast.literal_eval()
或 json.loads()
然后将其设置为属性。否则,您将在 start_urls
字符串(一个非常常见的Python陷阱),导致每个字符被视为一个单独的URL。
有效的用例是设置 HttpAuthMiddleware
或用户代理 UserAgentMiddleware
::
scrapy crawl myspider -a http_user=myuser -a http_pass=mypassword -a user_agent=mybot
蜘蛛参数也可以通过scrapyD传递 schedule.json
应用程序编程接口。见 Scrapyd documentation .
以上内容是否对您有帮助:
更多建议: