python - 在 Scrapy python 中将参数传递给 process.crawl

标签 python web-crawler scrapy scrapy-spider google-crawlers

我希望得到与此命令行相同的结果: scrapy crawl linkedin_anonymous -a first=James -a last=Bond -o output.json

我的脚本如下:

import scrapy
from linkedin_anonymous_spider import LinkedInAnonymousSpider
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings

spider = LinkedInAnonymousSpider(None, "James", "Bond")
process = CrawlerProcess(get_project_settings())
process.crawl(spider) ## <-------------- (1)
process.start()

我发现 (1) 中的 process.crawl() 正在创建另一个 LinkedInAnonymousSpider,其中 first 和 last 都是 None (打印在 (2) 中),如果是这样,那么创建对象蜘蛛没有意义,以及如何是否可以先和最后将参数传递给 process.crawl()?

linkedin_anonymous:

from logging import INFO

import scrapy

class LinkedInAnonymousSpider(scrapy.Spider):
    name = "linkedin_anonymous"
    allowed_domains = ["linkedin.com"]
    start_urls = []

    base_url = "https://www.linkedin.com/pub/dir/?first=%s&last=%s&search=Search"

    def __init__(self, input = None, first= None, last=None):
        self.input = input  # source file name
        self.first = first
        self.last = last

    def start_requests(self):
        print self.first ## <------------- (2)
        if self.first and self.last: # taking input from command line parameters
                url = self.base_url % (self.first, self.last)
                yield self.make_requests_from_url(url)

    def parse(self, response): . . .

最佳答案

process.crawl 方法中传递蜘蛛参数:

process.crawl(spider, input='inputargument', first='James', last='Bond')

关于python - 在 Scrapy python 中将参数传递给 process.crawl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34382356/

相关文章:

python - 代码在pycharm中运行良好,但转换为exe时却不行

python - 读取 MIDI 输入

python - 在 Pygame 中只填充一半的显示?

seo - 如果我使用的是 Apache 2,我应该如何处理使用 HTTP/0.9 的蜘蛛/网络爬虫?

python - 如何使用图像每个像素的值绘制 3d 图形?

php - 在 php 和 mysql 中从维基百科中提取内容

php - SEO:爬虫如何考虑 PHP 构建的页面?

python - 如何获取使用 JavaScript 构建的 anchor 标记的重定向链接?

python-2.7 - 构造Xpath

python - Scrapy 的 HtmlResponse 不从 URL 检索数据