python3.4+pyspider爬58同城(二)
之前使用python3.4+selenium实现了爬58同城的详细信息,这次用pyspider实现,网上搜了下,目前比较流行的爬虫框架就是pyspider和scrapy,但是scrapy不支持python3,所以…
直接上代码,后面注解:
#!/usr/bin/env python from pyspider.libs.base_handler import * class Handler(BaseHandler): @every(minutes=24 * 60) @config(age=10 * 24 * 60 * 60) @config(priority=2) return { |
crawl_config = { 'itag':'v226' } #访问表头,useragent等请求信息都是在这里配置,其中itag表示版本的意思。pyspider有一个机制,如果在主页run一遍,那么每个请求的url都会有一个md5,标记这个任务已经结束,你再次点击run,pyspider不会再去请求同样的url,所以有时候我们修改完代码后,需要让任务执行一遍,重新将itag的版本号改一下就行。 |
on_start 函数类似java main函数,是运行代码的入口。 self.crawl('http://sz.58.com/pbdn/0/pn1/', callback=self.index_page) #意思是去请求'http://sz.58.com/pbdn/0/pn1/'网址,返回的内容交给index_page这个函数去处理。 index_page 函数,处理'http://sz.58.com/pbdn/0/pn1/'网址返回的内容,从代码我们可以看到,pyspider请求网站返回的对象都是用response为变量,而responce.doc()意思就是使用pyquery去处理网页返回的内容,所以responce.doc()该方法其实类似于: from pyquery import PyQuery as doc 将pyquery封装。 detail_page函数作用,就是获取网页的详细信息,获取下图区域,价格,浏览量等信息,并且返回一个字典 |
fetch_type='js' #pyspider调用phantomjs去渲染js,因为浏览量是js渲染,如果我们使用requests去请求,得不到该数据。pyspider已经封装了调用phantomjs函数库,所以我们在使用fetch_type时候,要保证安装了phantomjs。 |
@every(minutes=24 * 60) 这些装饰器作用是告诉pyspider多久自动执行一次,这样我们每天就可以获取最新的信息,此处代表每天执行一次。 @config(age=10 * 24 * 60 * 60)表示已经得到的数据保留十天,十天后弃掉 |
最新文章
- 【如何快速的开发一个完整的iOS直播app】(采集篇)
- [转]C语言指针学习经验总结浅谈
- js判断微信浏览器
- 如何设置通过ip访问数据库
- 转--C++学习笔记(原创)
- HTML的结束标签问题
- hdu1043Eight (经典的八数码)(康托展开+BFS)
- C#读写共享文件夹
- mysql根据汉字首字母排序[转]
- Scala--映射和元组
- Python核心编程的四大神兽:迭代器、生成器、闭包以及装饰器
- (转)sublime text3 3176激活
- PageAdmin CMS网站建设教程:如何创建及管理栏目?
- React—Native开发之原生模块向JavaScript发送事件
- 起床困难综合症 NOI_2014_D1T1
- App-IOS与Android弱网环境测试
- 转转转!!Spring MVC控制器用@ResponseBody声明返回json数据报406的问题
- 随笔小问题(一)--mac打开class文件
- SpringBoot接口服务处理Whitelabel Error Page
- asp.net+mvc+easyui+sqlite 简单用户系统学习之旅(三)—— 简单登录页面+sqlite+动软代码生成器的使用
热门文章
- R语言的数据结构
- C语言float型数据在内存中的储存方式
- Oracle 10g RAC启动与关闭命令
- vs 自动生成core dump文件
- Qt编程之信号与槽-------unresolved external symbol ";public: virtual struct QMetaObject const * __thiscall XX::metaObject(void)const
- java获得指定日期的前一天,后一天的代码
- tyvj1297 小气的小B
- SQL server 中 COUNT DISTINCT 函数
- ora-28056 (Writing audit records to Windows Event Log failed)
- python高级编程之元类(第3部分结束)