Python 刮痧不刮痧?

Python 刮痧不刮痧?,python,https,web-scraping,scrapy,Python,Https,Web Scraping,Scrapy,我是新来的,所以我可能只是做错了。然而,scrapy似乎不会刮去我提供给它的任何https站点 class SeleniumSpider(CrawlSpider): name = "SeleniumSpider" start_urls = ["https://www.facebook.com"] rules = ( Rule(SgmlLinkExtractor(allow=('\.html', )), callba

我是新来的,所以我可能只是做错了。然而,scrapy似乎不会刮去我提供给它的任何https站点

class SeleniumSpider(CrawlSpider):
    name = "SeleniumSpider"
    start_urls = ["https://www.facebook.com"]

    rules = (
        Rule(SgmlLinkExtractor(allow=('\.html', )), callback='parse_page',follow=True),
    )

    def __init__(self):
        CrawlSpider.__init__(self)
        
    def __del__(self):
        self.driver.stop()
        print self.verificationErrors
        CrawlSpider.__del__(self)

    def parse_page(self, response):
        hxs = HtmlXPathSelector(response)
        hxs.select('//div').extract()
输出:

2014-05-30 11:22:01-0400 [scrapy] INFO: Scrapy 0.22.2 started (bot: scrapybot)
2014-05-30 11:22:01-0400 [scrapy] INFO: Optional features available: ssl, http11
2014-05-30 11:22:01-0400 [scrapy] INFO: Overridden settings: {'DEFAULT_ITEM_CLASS': 'dirbot.items.Website', 'NEWSPIDER_MODULE': 'dirbot.spiders', 'SPIDER_MODULES': ['dirbot.spiders']}    
2014-05-30 11:22:01-0400 [scrapy] INFO: Enabled extensions: LogStats, TelnetConsole, CloseSpider, WebService, CoreStats, SpiderState  
2014-05-30 11:22:01-0400 [scrapy] INFO: Enabled downloader middlewares: HttpAuthMiddleware, DownloadTimeoutMiddleware, UserAgentMiddleware, RetryMiddleware, DefaultHeadersMiddleware, MetaRefreshMiddleware, HttpCompressionMiddleware, RedirectMiddleware, CookiesMiddleware, ChunkedTransferMiddleware, DownloaderStats  
2014-05-30 11:22:01-0400 [scrapy] INFO: Enabled spider middlewares: HttpErrorMiddleware, OffsiteMiddleware, RefererMiddleware, UrlLengthMiddleware, DepthMiddleware
2014-05-30 11:22:01-0400 [scrapy] INFO: Enabled item pipelines: FilterWordsPipeline
2014-05-30 11:22:01-0400 [SeleniumSpider] INFO: Spider opened
2014-05-30 11:22:01-0400 [SeleniumSpider] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2014-05-30 11:22:01-0400 [scrapy] DEBUG: Telnet console listening on 0.0.0.0:6023
2014-05-30 11:22:01-0400 [scrapy] DEBUG: Web service listening on 0.0.0.0:6080
2014-05-30 11:22:01-0400 [SeleniumSpider] DEBUG: Crawled (200) <GET https://www.facebook.com> (referer: None)
2014-05-30 11:22:01-0400 [SeleniumSpider] INFO: Closing spider (finished)
2014-05-30 11:22:01-0400 [SeleniumSpider] INFO: Dumping Scrapy stats:
2014-05-30 11:22:01-0400[scrapy]信息:scrapy 0.22.2启动(机器人:scrapybot)
2014-05-30 11:22:01-0400[scrapy]信息:可选功能可用:ssl、http11
2014-05-30 11:22:01-0400[scrapy]信息:覆盖的设置:{'DEFAULT_ITEM_CLASS':'dirbot.items.Website','NEWSPIDER_MODULE':'dirbot.SPIDER','SPIDER_MODULES':['dirbot.SPIDER']}
2014-05-30 11:22:01-0400[scrapy]信息:启用的扩展:LogStats、TelnetConsole、CloseSpider、WebService、CoreStats、SpiderState
2014-05-30 11:22:01-0400[scrapy]信息:启用的下载程序中间件:HttpAuthMiddleware、DownloadTimeoutMiddleware、UserAgentMiddleware、RetryMiddleware、DefaultHeadersMiddleware、MetaRefreshMiddleware、HttpCompressionMiddleware、RedirectMiddleware、Cookies Middleware、ChunkedTransferMiddleware、DownloadersStats
2014-05-30 11:22:01-0400[scrapy]信息:启用的spider中间件:HttpErrorMiddleware、OffsiteMiddleware、RefererMiddleware、UrlLengthMiddleware、DepthMiddleware
2014-05-30 11:22:01-0400[scrapy]信息:启用的项目管道:过滤器或Spipeline
2014-05-30 11:22:01-0400[赛琳娜蜘蛛]信息:蜘蛛已打开
2014-05-30 11:22:01-0400[SeleniumSpider]信息:爬网0页(0页/分钟),刮取0项(0项/分钟)
2014-05-30 11:22:01-0400[scrapy]调试:Telnet控制台在0.0.0.0:6023上侦听
2014-05-30 11:22:01-0400[scrapy]调试:在0.0.0.0:6080上侦听Web服务
2014-05-30 11:22:01-0400[SeleniumSpider]调试:爬网(200)(参考:无)
2014-05-30 11:22:01-0400[SeleniumSpider]信息:关闭卡盘(已完成)
2014-05-30 11:22:01-0400[赛琳娜斯皮德]信息:倾倒碎屑统计数据:

有什么建议吗?Crawler在和其他人上运行良好

这与
https
无关。问题是实际上没有包含
.html
的链接

以下是您可以测试它的方法:

class SeleniumSpider(CrawlSpider):
    name = "SeleniumSpider"
    start_urls = ["https://www.facebook.com"]

    def parse(self, response):
        hxs = Selector(response)
        print hxs.xpath('//a[contains(@href, "html")]').extract()
它将输出一个空列表

不要在facebook的html页面上爬行,你应该真正使用or,它更方便、更健壮。我敢肯定,使用scrapy解析facebook页面一点也不好玩,因为在facebook上构建页面涉及到太多动态javascript逻辑、ajax调用等

UPD(提取所有链接的一般规则):


当我试图刮脸书,它会给我同样的问题。我认为facebook做了一些棘手的事情。我尝试了其他https网站,得到了同样的结果。。。。你在其他https网站上成功过吗?没有使用Scrapy,我通常只使用urllib2本身,并以这种方式获取所有数据。有关于这方面的好教程吗?如果urllib2不是非常困难的话,我不会坚持使用scrapy我正在尝试制作一个更通用的爬虫程序,它可以在http和https上工作。还试图使用selenium来处理动态内容。有没有办法修复我的爬行器来实际抓取https站点?@Neppinger它实际抓取https站点。我提供了一个示例,查看
parse()中的
响应中的内容
callback-那里是一个facebook页面。我想我的下一个问题是,是否有一个广泛的规则可以用于爬行器,允许它们在大多数网页中爬行,而不管.html页面或其他页面。Neppinger请参阅UPD部分-只是不要向
sgmlLinkedExtractor
构造函数提供任何参数。
rules = (
    Rule(SgmlLinkExtractor(), callback='parse_page', follow=True),
)