本系列文章主要记录和讲解pyspider的示例代码,希望能抛砖引玉。pyspider示例代码官方网站是http://demo.pyspider.org/。上面的示例代码太多,无从下手。因此本人找出一下比较经典的示例进行简单讲解,希望对新手有一些帮助。

示例说明:

如果页面中部分数据或文字由js生成,pyspider不能直接提取页面的数据。pyspider获取页面的代码,但是其中的js代码phantomjs,解决js代码执行问题。

使用方法:

方法一:在self.crawl函数中添加fetch_type="js"调用phantomjs执行js代码。

方法二:为函数添加参数@config(fetch_type="js")。

示例代码:

1、www.sciencedirect.com网站示例

#!/usr/bin/env python
# -*- encoding: utf- -*-
# vim: set et sw= ts= sts= ff=unix fenc=utf8:
# Created on -- :: import re
from libs.base_handler import * class Handler(BaseHandler):
'''
this is a sample handler
'''
crawl_config = {
"headers": {
"User-Agent": "BaiDu_Spider",
},
"timeout":,
"connect_timeout":
} def on_start(self):
self.crawl('http://www.sciencedirect.com/science/article/pii/S1568494612005741',timeout=,connect_timeout=,
callback=self.detail_page)
self.crawl('http://www.sciencedirect.com/science/article/pii/S0167739X12000581',timeout=,connect_timeout=,
age=, callback=self.detail_page)
self.crawl('http://www.sciencedirect.com/science/journal/09659978',timeout=,connect_timeout=,
age=, callback=self.index_page) @config(fetch_type="js")
def index_page(self, response):
for each in response.doc('a').items():
url=each.attr.href
#print(url)
if url!=None:
if re.match('http://www.sciencedirect.com/science/article/pii/\w+$', url):
self.crawl(url, callback=self.detail_page,timeout=,connect_timeout=) @config(fetch_type="js")
def detail_page(self, response):
self.index_page(response)
self.crawl(response.doc('#relArtList > li > .cLink').attr.href, callback=self.index_page,timeout=,connect_timeout=) return {
"url": response.url,
"title": response.doc('.svTitle').text(),
"authors": [x.text() for x in response.doc('.authorName').items()],
"abstract": response.doc('.svAbstract > p').text(),
"keywords": [x.text() for x in response.doc('.keyword span').items()],
}

最新文章

  1. 如何在一个MyEclipse2014GA配置多个Tomcat8.X系列的应用服务器,同时运行
  2. js隐式转换
  3. Wiki设置
  4. Beego源码分析(转)
  5. 一个App的界面设计流程是怎么产生的
  6. IntelliJ IDEA 的 Java 热部署插件 JRebel 安装及使用
  7. label的for属性与inputde的id元素绑定
  8. box-shadow属性
  9. 9_Permanent Storage
  10. 【Java入门提高篇】Day3 抽象类与接口的比较
  11. Codeforces 1154F - Shovels Shop - [DP]
  12. OAuth2认证和授权:AuthorizationCode认证
  13. 洗礼灵魂,修炼python(15)--列表进阶话题—>列表解析/列表生成器
  14. linux下部署jdk+Tomcat
  15. Mac设置信认任意来源应用
  16. jquery load ($.load) 事件用法与分析(转)
  17. 编写hibernateDao,使dao层都实现hibernateDao
  18. @Transactional spring 事务失效(转载)
  19. 标准输出:1>,2>,1>&2,2>&1
  20. 201621123014《Java程序设计》第十三周学习总结

热门文章

  1. 重新学习之spring第三个程序,整合struts2+spring
  2. Linux下定时切割Mongodb数据库日志并删除指定天数前的日志记录
  3. docker挂载本地目录和数据卷容器
  4. linux pwd命令查看当前路径命令
  5. Python项目输出小类概率,机器学习
  6. 【转】httpservlet 文章
  7. Executors中的几种线程调用方式
  8. 关于Android App开发知识体系的一个小总结
  9. dd命令的conv=fsync,oflag=sync/dsync
  10. 20165233 实验一 Java开发环境的熟悉