python爬虫----(5. scrapy框架,综合应用及其他)
时间:2022-07-22
本文章向大家介绍python爬虫----(5. scrapy框架,综合应用及其他),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在分析和处理选择内容时,还需注意页面的JS可能会修改DOM树结构。
(一)GitHub的使用
由于之前使用Win,没使用过shell的。目前只是了解。以后再补充。找到几个不错的教程
GitHub超详细图文攻略 http://blog.csdn.net/vipzjyno1/article/details/22098621
Github修改提交 http://www.360doc.com/content/12/0602/16/2660674_215429880.shtml
以后再补充!!!!!
(二)FireFox的FireBug的使用
之前一直使用FireFox的F12默认调试工具,感觉就挺爽的了。刚才换了FireBug一试,那简直就更爽了。
Tools-->Web Developer-->Get More Tools 然后,一般第一个就是 FireBug 安装即可。之后按F12,就默认启用了。
功能简直强大到没朋友。可以直接获取元素的xpath,css path。还可修改cookies.....
(三)豆瓣电影抓取 http://www.ituring.com.cn/article/114408
(1)items.py
# -*- coding: utf-8 -*-
from scrapy import Item, Field
class MovieItem(Item):
name = Field()
year = Field()
score = Field()
director = Field()
classification = Field()
actor = Field()
(2)spiders/movie_spider.py
# -*- coding: utf-8 -*-
from scrapy import Selector
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from douban.items import MovieItem
class MovieSpider(CrawlSpider):
name = "movie"
allowed_domains = ["douban.com"]
start_urls = (
'http://movie.douban.com/top250',
)
# rules可以自定义urls的抓取
rules = (
# 这个Rule只是在start_urls的基础上查找urls,并不是数据抓取的具体页面
Rule(SgmlLinkExtractor(allow=(r'http://movie.douban.com/top250?start=d+.*'))),
# 这个Rule是具体数据抓取的页面地址,callback是回调函数,负责处理返回的response数据
Rule(SgmlLinkExtractor(allow=(r'http://movie.douban.com/subject/d+')), callback='parse_item'),
)
def parse_item(self, response):
sel = Selector(response)
item = MovieItem()
# 此处选择还可使用 css(), re() 等。还可利用FireBug协助选取
item['name'] = sel.xpath('//span[@property="v:itemreviewed"]/text()').extract()
item['year'] = sel.xpath('//span[@class="year"]/text()').extract()
item['score'] = sel.xpath('//strong[@class="ll rating_num"]/text()').extract()
item['director'] = sel.xpath('//a[@rel="v:directedBy"]/text()').extract()
item['classification'] = sel.xpath('//span[@property="v:genre"]/text()').extract()
item['actor'] = sel.xpath('//a[@rel="v:starring"]/text()').extract()
return item
(3)Pipeline.py
# 将抓取的数据保存到数据库中,这里有两个版本
#一个是保存到MySQL数据库中
#另一个是保存到非关系型数据库MongoDB中
- Thinking in React Implemented by Reagent
- ssm整合Redis
- 前端魔法堂——调用栈,异常实例中的宝藏
- 开启MySQL的binlog日志
- C#解析JSON
- 动手写个数字输入框1:input[type=number]的遗憾
- 小猪农场获百万天使轮,六声域名源自运营主体
- Intellij idea 的maven项目自动下载jar包
- python3和python2共存
- 揭密微信跳一跳小游戏那些外挂
- 特斯拉出现人才流失潮,竟因为一些工程师认为Autopilot自动驾驶技术并不安全
- 微信又更新了,这次放出年度大招!新变化让不少人拍手叫好!
- “JINAN”:未来电动汽车边跑边充电
- Bagging算法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Ant Design for Vue的Table组件一列显示多个参数
- 【React】React-router的使用记录
- Blazor带我重玩前端(四)
- Android绘制系统简介
- E: Sub-process /usr/bin/dpkg returned an error code (1) 解决方案
- Linux 如何使用包管理器安装 Node.js
- CSS画图
- R语言聚类算法的应用实例
- Python时间序列选择波动率预测指数收益算法分析案例
- Linux 常用系统工作命令-date
- R使用LASSO回归预测股票收益
- Linux 常用系统工作命令-reboot、poweroff、wget
- Node.js + Socket.io 实现一对一即时聊天
- Linux 常用系统工作命令-ps、top
- Python之LDA主题模型算法应用