scrapy爬虫系列之一--scrapy的基本用法
功能点:scrapy基本使用
爬取网站:传智播客老师
完整代码:https://files.cnblogs.com/files/bookwed/first.zip
主要代码:
ff.py
# -*- coding: utf-8 -*-
import scrapy
from first.items import FirstItem class FfSpider(scrapy.Spider): #scrapy.Spider是最基本的类,必须继承这个类
# 爬虫名称
name = 'ff'
# 允许的域名,可选
allowed_domains = ['itcast.cn']
start_urls = ['http://www.itcast.cn/channel/teacher.shtml'] # 默认的Request对象回调函数,用来处理网页返回的response,以及生成Item或者Request对象
def parse(self, response):
teacher_list = response.xpath("//div[@class='li_txt']")
for teacher in teacher_list:
# 创建item对象
item = FirstItem()
# 此处由于疏忽,把teacher写成了item,结果找了半天
name = teacher.xpath("./h3/text()").extract() # xpath返回的是xpath对象,需要用extract提取字符串,同时,因为返回的是一个列表,所以要用[0]取值
level = teacher.xpath("./h4/text()").extract()
desc = teacher.xpath("./p/text()").extract() item["name"] = name[0]
item["level"] = level[0]
item["desc"] = desc[0]
yield item
pipelines.py
import json
# 注意点:对应的settings配置,别忘了打开注释
# 可以做数据去重
class FirstPipeline(object):
def __init__(self):
self.f = open('teachers.json', 'w', encoding='utf-8') # 处理item
def process_item(self, item, spider):
print(dict(item))
content = json.dumps(dict(item), ensure_ascii=False)
self.f.write(content+",")
self.f.write("\n")
return item def close_spider(self):
self.f.close()
scrapy爬虫系列之一--scrapy的基本用法的更多相关文章
- [Python爬虫] scrapy爬虫系列 <一>.安装及入门介绍
前面介绍了很多Selenium基于自动测试的Python爬虫程序,主要利用它的xpath语句,通过分析网页DOM树结构进行爬取内容,同时可以结合Phantomjs模拟浏览器进行鼠标或键盘操作.但是,更 ...
- 5、爬虫系列之scrapy框架
一 scrapy框架简介 1 介绍 (1) 什么是Scrapy? Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍.所谓的框架就是一个已经被集成了各种功能(高性能 ...
- scrapy爬虫系列之开头--scrapy知识点
介绍:Scrapy是一个为了爬取网站数据.提取结构性数据而编写的应用框架,我们只需要实现少量的代码,就能够快速抓取.Scrapy使用了Twisted异步网络框架,可以加快我们的下载速度. 0.说明: ...
- 爬虫系列之Scrapy框架
一 scrapy框架简介 1 介绍 (1) 什么是Scrapy? Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍.所谓的框架就是一个已经被集成了各种功能(高性能 ...
- scrapy爬虫系列之六--模拟登录
功能点:如何发送携带cookie访问登录后的页面,如何发送post请求登录 爬取网站:bilibili.github 完整代码:https://files.cnblogs.com/files/book ...
- scrapy爬虫系列之二--翻页爬取及日志的基本用法
功能点:如何翻页爬取信息,如何发送请求,日志的简单实用 爬取网站:腾讯社会招聘网 完整代码:https://files.cnblogs.com/files/bookwed/tencent.zip 主要 ...
- scrapy爬虫系列之七--scrapy_redis的使用
功能点:如何发送携带cookie访问登录后的页面,如何发送post请求登录 简单介绍: 安装:pip3 install scrapy_redis 在scrapy的基础上实现了更多的功能:如reques ...
- scrapy爬虫系列之五--CrawlSpider的使用
功能点:CrawlSpider的基本使用 爬取网站:保监会 主要代码: cf.py # -*- coding: utf-8 -*- import scrapy from scrapy.linkextr ...
- python爬虫系列:Scrapy安装与使用
这篇博文主要写Scrapy框架的安装与使用 Scrapy框架安装 命令行进入C:\Anaconda2\Scripts目录,运行:conda install Scrapy 创建Scrapy项目 1)进入 ...
随机推荐
- Unity使用JsonFX插件进行序列化
孙广东 2015.6.25 Unity and JSON – Quick Guide: 相比較XML的沉重和密集,Json更加高效. Introduction: 什么是 Json ?假设你从未使用过 ...
- gen_server的一些猜测
1. exit(Pid,Reason)貌似不会引起gen_server的terminate()的执行. 猜测依据:erlang编程指南的第十二章的272页 终止 当从 回调函数中的一个收到stop ...
- c++ time_t
type struct tm <ctime> Time structure Structure containing a calendar date and time broken dow ...
- jQuery继承extend用法详解
/直接基于jQuery的扩展,判断是否为空 $.isBlank = function(obj){ return(typeof(obj)=='undefined'||obj==''||obj==nu ...
- hbase shell中执行list命令报错:ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
问题描述: 今天在测试环境中,搭建hbase环境,执行list命令之后,报错: hbase(main):001:0> list TABLE ERROR: org.apache.hadoop.hb ...
- Android Timer的应用示例
package com.hyzhou.timerdemo1; import java.util.Timer; import java.util.TimerTask; import android.os ...
- list中的比较
一说到list的的确不知道写些什么.....我觉得别人总结的比我写的还要好很多. 我擅长记录自己的误区. |--List:元素是有序的(怎么存的就怎么取出来,顺序不会乱),元素可以重复(角标1上有个3 ...
- django 错误分类及解决办法汇总
问题1:启动服务器后浏览器无法访问http://localhost:8000,访问被拒绝
- 批量执行命令:fabric
Fabric 可以通过 SSH 在多台客户端主机上批量执行任务,是基于 paramiko 封装开发的,paramiko 更底层一些,安装方法如下: [root@localhost ~]$ yum in ...
- 首个vue.js项目收尾中……
前言: 4.26号入手vue.js+elementUI,迄今为止我们的工作应该可以暂时告一段落了:下周开始,又是新的“征程”. 过程:站在接近完成的角度来看这个项目,似乎的确有许多事情需要自己阐述. ...