Pyspider 爬虫使用说明
来源:互联网 发布:utorrent mac下载很慢 编辑:程序博客网 时间:2024/05/18 19:42
一、 pyspider安装
pip install pyspider
启动之后如下:
Windows系统
Linux系统
二、pyspider例子
重点参考http://blog.csdn.net/u011659379/article/details/48223385,需要注意的是其中csspath的选取,其中的css selector可参考网页http://www.w3schools.com/cssref/css_selectors.asp。
html bodydiv#container.ss-list div.main div.box div.content div.siteList ul li h3 a
将路径加上>即可,变成形如
html>body>div#container.ss-list>div.main>div.box>div.content>div.siteList>ul>li>h3>a
注意:有时候可能需要修改某些内容,如去掉(tbody)
例子:http://school.163.aoshu.com/school/249907/,获取学校网址。
FireFox浏览器抓取结果
html>body>div.wrapper.bgf>div.school>article.schoolintro>dl.clearfix>dd>table>tbody>tr:last-child>td:last-child
实际使用时候为:
table>tr:nth-child(6)>td:nth-child(2)
备注:
tbody可能是页面自动生成的,可以通过打开源代码查看,确定是否需要去掉!
源码没有<tbody>这个元素,而浏览器打开是有<tobdy >这个元素的。
源码如下:
浏览器查看结果,含有<tbody>这个元素。
代码如下:
爬取豆瓣分类数据
from pyspider.libs.base_handler import *
class Handler(BaseHandler):
crawl_config = {
}
@every(minutes=24 * 60)
def on_start(self):
self.crawl('http://movie.douban.com/tag/', callback=self.index_page)
@config(age=10 * 24 * 60 *60)
def index_page(self,response):
for each inresponse.doc('#content>div>div.article>table:nth-child(9)>tbody>tr>td>a').items():
a=each.attr.href.replace('www','movie')
self.crawl(a,callback=self.list_page)
def list_page(self,response):
#获得电影详细内容链接并交给下一个函数处理
for each inresponse.doc('td > .pl2 > a').items():
self.crawl(each.attr.href,callback=self.detail_page)
#翻页,然后继续由list_page函数处理
for each inresponse.doc('.next > a').items():
self.crawl(each.attr.href,callback=self.list_page)
def detail_page(self,response):
return {
"url": response.url,
"title":response.doc('* > * > div#wrapper >div#content > h1 > span').text(),
"rate":response.doc('.rating_num').text(),
"导演":response.doc('#info> span:nth-child(1) > span.attrs > a').text()
}
例2、爬取dir001网址的分类信息
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# Created on 2016-09-08 09:22:15
# Project: dir003
from pyspider.libs.base_handler import *
class Handler(BaseHandler):
crawl_config = {
}
@every(minutes=24 * 60)
def on_start(self):
self.crawl('http://www.dir001.com/category', callback=self.index_page)
@config(age=100 * 24 * 60 *60)
def index_page(self,response):
for each inresponse.doc('html>body>div#container.ss-category>div.main>div.box.catalogbox>div.content>dl>dd>ul>li>a').items():
self.crawl(each.attr.href,callback=self.list_page)
@config(priority=2)
def list_page(self,response):
for each inresponse.doc('html>body>div#container.ss-list>div.main>div.box>div.content>div.siteList>ul>li>h3>a').items():
self.crawl(each.attr.href,callback=self.detail_page)
for each inresponse.doc('html>body>div#container.ss-list>div.main>div.box>div.content>div.pagelink>form#pageForm>ul.yiiPager>li:last-child>a').items():
self.crawl(each.attr.href,callback=self.list_page)
def detail_page(self,response):
return {
"url":response.doc('html>body>div#container.site-content>div.box.contenInfo>div.content>div.contentMain>div.siteInfo>div.movieDetail>p>span.site-domain').text(),#url地址
"mulu":response.doc('html>body>div#container.site-content>div.box.contenInfo>div.content>div.contentMain>div.siteInfo>div.movieDetail>p:nth-child(3)').text(),#目录
"location":response.doc('html>body>div#container.site-content>div.box.contenInfo>div.content>div.contentMain>div.siteInfo>div.movieDetail>p:nth-child(4)').text(),#地址
"Rank":response.doc('html>body>div#container.site-content>div.box.contenInfo>div.content>div.contentMain>div.siteInfo>div.movieDetail>p>b.alexarank').text(),#等级
"on_clicks":response.doc('html>body>div#container.site-content>div.box.contenInfo>div.content>div.contentMain>div.siteInfo>div.movieDetail>p>span.c_red').text(), #点击次数
"description":response.doc("html>body>div#container.site-content>div.box.contenInfo>div.content>div.contentMain>div.siteInfo>div.movieDetail>p>span.site-description").text()
}
参考文献
1. 官方参考文档http://docs.pyspider.org/en/latest/#installation
2.Python爬虫框架--pyspider初体验http://blog.csdn.net/u011659379/article/details/48223385
3.pyspider 爬虫教程
http://blog.binux.me/2015/01/pyspider-tutorial-level-1-html-and-css-selector/ HTML 和 CSS 选择器
http://blog.binux.me/2015/01/pyspider-tutorial-level-2-ajax-and-more-http/ AJAX 和 HTTP
http://blog.binux.me/2015/01/pyspider-tutorial-level-3-render-with-phantomjs/ 使用 PhantomJS 渲染带 JS 的页面
4. CSS selector 选取 http://www.w3schools.com/cssref/css_selectors.asp
- Pyspider 爬虫使用说明
- pyspider爬虫
- pyspider控制台使用说明
- pyspider 爬虫教程
- PySpider python 爬虫
- pyspider 爬虫教程
- Pyspider爬虫教程
- python爬虫框架-PySpider
- pyspider爬虫设置延时
- pyspider爬虫的一个应用
- PySpider爬虫框架折腾体验
- Python 爬虫框架pyspider尝试
- pyspider爬虫框架源码分析
- pyspider爬虫的一个应用
- pyspider爬虫核心逻辑架构
- CentOS搭建PySpider爬虫服务
- pyspider 爬虫教程(一)
- pyspider 爬虫教程(二)
- composer
- ios根据文字内容生成二维码
- MySQL常用操作
- CSS—表格出现滚动条
- 数据结构(二)---单链表的实现---java版
- Pyspider 爬虫使用说明
- 最全Git命令,掌握命令行操作。
- 数据结构--哈夫曼编码
- 377. Combination Sum IV
- 从AndroidManifest.xml文件中获取 android:value 值的Integer与String转换异常
- SSM框架项目搭建系列(三)—Spring中的Bean生命周期
- 如何在eclipse中进行floodlight模块开发
- maven 手动添加第三方的jar包
- OpenStack如何创建固定IP的虚拟机