传递参数

示例一

  1. #!/usr/bin/env python
  2. # -*- encoding: utf- -*-
  3. # vim: set et sw= ts= sts= ff=unix fenc=utf8:
  4. # Created on -- ::
  5.  
  6. import re
  7. import json
  8. from libs.pprint import pprint
  9. from libs.base_handler import *
  10.  
  11. class Handler(BaseHandler):
  12. '''
  13. this is a sample handler
  14. '''
  15. crawl_config = {
  16. }
  17. proxy = ""
  18.  
  19. @every(, )
  20. def on_start(self):
  21. self.crawl(self.proxy+'http://www.douban.com/group/haixiuzu/discussion',
  22. force_update=True, callback=self.index_page)
  23.  
  24. @config(age=)
  25. def index_page(self, response):
  26. for each in response.doc('tr > .title > a').items():
  27. self.crawl(self.proxy+each.attr.href, callback=self.detail_page)
  28.  
  29. @config(age=***)
  30. def detail_page(self, response):
  31. assert response.url != "https://www.douban.com/"
  32. return {
  33. "url": response.url,
  34. "title": response.doc("#content h1").text(),
  35. "author": response.doc(".topic-content .from a").text(),
  36. "author_url": response.doc("DIV.topic-doc>H3>SPAN.from>A").attr.href,
  37. "imgs": [x.attr.src for x in response.doc('.topic-doc img').items()]
  38. }
  39.  
  40. def on_result(self, result):
  41. if not result or not result['imgs']:
  42. return
  43. post_id = re.search("topic/(\d+)", self.response.url).group()
  44. self.crawl("https://api.duoshuo.com/posts/import.json#"+post_id, method="POST",
  45. data={
  46. "short_name": "database",
  47. "secret": "8e5a5be8873ad7e9a59147c3cfd10e73",
  48. "posts[0][post_key]": post_id,
  49. "posts[0][thread_key]": "haixiuzu",
  50. "posts[0][message]": json.dumps(result).encode("base64").replace("\n", "")
  51. }, callback=self.post_to_duoshuo)
  52.  
  53. def post_to_duoshuo(self):
  54. pass

示例二

  1. #!/usr/bin/env python
  2. # -*- encoding: utf- -*-
  3. # Created on -- ::
  4. # Project: prieto
  5.  
  6. import re
  7. from pyspider.libs.base_handler import *
  8.  
  9. class Handler(BaseHandler):
  10.  
  11. crawl_config = {
  12. }
  13.  
  14. @every(minutes= * )
  15. def on_start(self):
  16. for i in range():
  17. self.crawl('data:,step%d' % i, callback=self.gen_url, save=i)
  18.  
  19. @config(priority=)
  20. def gen_url(self, respond):
  21. for i in range(respond.save * , (respond.save + ) * ):
  22. self.crawl("http://bbs.fobshanghai.com/viewthread.php?action=printable&tid=%d" % i, callback=self.index_page)
  23.  
  24. @config(priority=)
  25. def index_page(self, respond):
  26.  
  27. # title = response.doc
  28. hr_black = u'<hr noshade="noshade" size="2" width="100%" color="#808080"/>'
  29. hr_blue = u'<br/><br/><br/><br/><hr noshade="noshade" size="2" width="100%" color="#698cc3"/>'
  30.  
  31. #posts = respond.doc('body').html().split(hr_blue)[].split(hr_black)[:]
  32.  
  33. if respond.doc('head').html().startswith('<meta'):
  34. return {
  35. "tid": respond.url.split('=')[-],
  36. "url": respond.url,
  37. "html": 'The specified thread does not exist.',
  38. }
  39.  
  40. return {
  41. "tid": respond.url.split('=')[-],
  42. "url": respond.url,
  43. #"t_author": posts[].split('\n')[].split('<b>')[].strip(), # 用正则更好
  44. "html": respond.doc.html(),
  45. #"replies": [i for i in posts[:]]
  46. }

pyspider示例代码六:传递参数的更多相关文章

  1. pyspider示例代码:解析JSON数据

    pyspider示例代码官方网站是http://demo.pyspider.org/.上面的示例代码太多,无从下手.因此本人找出一下比较经典的示例进行简单讲解,希望对新手有一些帮助. 示例说明: py ...

  2. pyspider示例代码三:用PyQuery解析页面数据

    本系列文章主要记录和讲解pyspider的示例代码,希望能抛砖引玉.pyspider示例代码官方网站是http://demo.pyspider.org/.上面的示例代码太多,无从下手.因此本人找出一些 ...

  3. pyspider示例代码二:解析JSON数据

    本系列文章主要记录和讲解pyspider的示例代码,希望能抛砖引玉.pyspider示例代码官方网站是http://demo.pyspider.org/.上面的示例代码太多,无从下手.因此本人找出一下 ...

  4. pyspider示例代码一:利用phantomjs解决js问题

    本系列文章主要记录和讲解pyspider的示例代码,希望能抛砖引玉.pyspider示例代码官方网站是http://demo.pyspider.org/.上面的示例代码太多,无从下手.因此本人找出一下 ...

  5. 【openresty】向lua代码中传递参数

    前面介绍FormInputNginxModule模块时,明白了openresty如何获取post提交的数据. 然后,如果需要通过lua处理这些数据,需要把数据作为参数传递到lua中,lua获取了这些数 ...

  6. pyspider示例代码五:实现自动翻页功能

    实现自动翻页功能 示例代码一 #!/usr/bin/env python # -*- encoding: utf- -*- # Created on -- :: # Project: v2ex fro ...

  7. pyspider示例代码七:自动登陆并获得PDF文件下载地址

    自动登陆并获得PDF文件下载地址 #!/usr/bin/env python # -*- encoding: utf- -*- # Created on -- :: # Project: pdf_sp ...

  8. pyspider示例代码四:搜索引擎爬取

    搜索引擎爬取 #!/usr/bin/env python # -*- encoding: utf- -*- # Created on -- :: # Project: __git_lab_fix fr ...

  9. 传递命令行参数示例代码 (C 和 Python)

    C语言 在 C 语言中, 使用 main 函数的输入参数 argc 和 argv 传入命令行参数. argc 为 int 类型, 表示传入命令行参数的个数 (argument count); argv ...

随机推荐

  1. Sqlserver查询数据库文件大小和剩余空间

    在MS Sql Server中可以能过以下的方法查询出磁盘空间的使用情况及各数据库数据文件及日志文件的大小及使用利用率: 1.查询各个磁盘分区的剩余空间:Exec master.dbo.xp_fixe ...

  2. maven项目--Eclipse报错:java.lang.ClassNotFoundException: ContextLoaderListener

    转自:https://yq.aliyun.com/ziliao/597445 Eclipse中tomcat部署工程启动后报错: 二月 25, 2016 2:34:00 下午 org.apache.to ...

  3. angular controller 之间的通信方式

    AngularJS中的controller是个函数,用来向视图的作用域($scope)添加额外的功能,我们用它来给作用域对象设置初始状态,并添加自定义行为. 当我们在创建新的控制器时,angularJ ...

  4. HTML5拖动

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  5. delphi ios grid BindSourceDB bug

    BindSourceDB4.DataSet :=nil; BindSourceDB4.DataSet :=FDMemTable1; grid绑定后显示数据正常,第二次赋值BindSourceDB4.D ...

  6. Spring Boot实践——Mybatis分页插件PageHelper的使用

    出自:https://blog.csdn.net/csdn_huzeliang/article/details/79350425 在springboot中使用PageHelper插件有两种较为相似的方 ...

  7. Objective C, post 请求

    -(void)postData { NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithS ...

  8. SQL Server 2008用'sa'登录失败,启用'sa'登录的办法

    首先”为什么用sa登录不了,提示登录失败呢?" 当然,自己装SQL Server 2008的时候根本就没有用sa登录的方法,装数据库的时候是用windows身份登录的. 如果要启用用户名为“ ...

  9. 吴裕雄 数据挖掘与分析案例实战(8)——Logistic回归分类模型

    import numpy as npimport pandas as pdimport matplotlib.pyplot as plt # 自定义绘制ks曲线的函数def plot_ks(y_tes ...

  10. SpringCloud之Eureka 服务注册和服务发现基础篇2

    上篇文章讲解了SpringCloud组件和概念介绍,接下来讲解一下SpringCloud组件相关组件使用.原理和每个组件的作用的,它主要提供的模块包括:服务发现(Eureka),断路器(Hystrix ...