zoukankan      html  css  js  c++  java
  • PySpider框架学习

    ——利用Phantomjs和PySpider就可以抓取通过JavaScript渲染的网页啦

    先来解释一下框架中的代码结构:

      定义一个Handler类,它继承于父类BaseHandler,里面包含三个函数:on_start()进入目标网站,返回索引页html代码并传给index_page();index_page()对索引页html代码进行解析,返回解析结果并传给detail_page();detail_page()对详情页进行解析便返回详细信息。   

     1 from pyspider.libs.base_handler import *
     2 
     3 class Handler(BaseHandler):
     4     crawl_config = {
     5     }
     6     
     7     @every(minutes=24*60)    # 表示on_start()每24h执行一次,就能抓取到最新网页
     8     def on_start(self):
     9         # __start_url__为要爬取的目标网址,callback指定解析response的方法,即调用index_page()函数
    10         self.crawl('__start_url__', callback=self.index_page)
    11     
    12     @config(age=10*24*60*60)    # 表示on_start()爬取的页面十天内有效,不会再次进行爬取
    13     def index_page(self, response):
    14         # 内置封装了PyQuery对response进行解析
    15         for each in response.doc('a[href^="http"]').items():
    16             self.crawl(each.attr.href, callback=self.detail_page)
    17             
    18             
    19     def detail_page(self, response):  
    20         return{
    21             'url': response.url,
    22             'title': response.doc('title').text()
    23         }

    注意:

      当@every和age同时被设置时,请求会每天被触发一次,但是在有效周期(age)内,请求会被丢弃,只有过期才能重新启动。

  • 相关阅读:
    PHP实现http与https转化
    HTTP和HTTPS详解
    如何防止SWF文件被反编译
    Swf Decrypt详解
    PCIE体系结构
    windows设备驱动安装指南
    [转]RegOpenKeyEx函数失败的问题
    用Setup系列函数完成驱动卸载安装[驱动安装卸载程序]
    Skipped Rebuild All: Project with VS2008
    LINK : fatal error LNK1000: Internal error during IncrBuildImage
  • 原文地址:https://www.cnblogs.com/chang2021/p/13831518.html
Copyright © 2011-2022 走看看