Python学习日记 Scrapy框架 2. 爬取教师信息

1. 创建新项目

Terminal中进入待创建项目目录,输入scrapy startproject 项目名称

出现问题:

解决办法:在Terminal输入 pip install -I cryptography,等待其安装成功。然后再输入scrapy startproject Spider(自定义的项目名)即可创建成功。

出现如上后创建成功。

项目中会得到的

文件结构

如下:

scrapy.cfg :Scrapy的配置未见

items.py :Items定义爬取的数据结构(待爬取的内容格式)

middlewares.py :Middlewares定义爬取的中间件

pipelines.py:Pipelines定义数据管道(储存内容)

settings.py:配置文件

2.明确爬取内容,编写items.py

该项目预期爬取教师信息,则有老师姓名、职位、简介

# -*- coding: utf-8 -*-

# Define here the models for your scraped items

# See documentation in:

# http://doc.scrapy.org/en/latest/topics/items.html

import scrapy

class ItcastspiderItem(scrapy.Item):

# define the fields for your item here like:

# name = scrapy.Field()

# 老师姓名

name = scrapy.Field()

# 职位

level = scrapy.Field()

# 介绍信息

info = scrapy.Field()

3. 编写爬虫文件

3.1 获取相应

首先通过 scrapy shell example.com,response通过最简单的方法得到相应。如果是

403代表爬虫被封

了;如果是

200代表访问正常

。所以我们需要设置user-agent,伪装成浏览器:scrapy shell example.com -s USER_AGENT。

3.2 创建爬虫文件

根据创建项目时scrapy startproject xx时应答:

You can start your first spider with:

cd XX

scrapy gensipder

example example.com

上述中,example:爬虫名,不可与项目名重复;example.com:爬虫范围,即www.baidu.com后爬虫不会在www.google.com上爬取内容。

3.3 Xpath语法

符号

作用

/

选择某个标签下的所有内容

text()

选择标签内所包含的文本

@

选择标签属性信息

//

选择所有标签

[@属性=值]

该标签属性满足一定条件

在网页中

F12

打开开发者工具,定位需要爬取的信息后,通过

Copy xpath

获得对应的xpath的表达式,在prase函数中编写数据定位代码。

先锁定需要爬取信息,然后通过

Copy xpath

获取xpath表达式,比如我们需要获得该图左边人物的名字和职称

/html/body/div[5]/div/ul/li[1]/div[2]

/html/body/div[5]/div/ul/li[1]/div[2]/p[1]/b

/html/body/div[5]/div/ul/li[1]/div[2]/p[1]/text()

上述三个表达式分别表示文字栏目录,名字,职位。通过在scrapy shell XX得到响应后调试,可以得:

在定位完成需要爬取的信息后,开始编写爬虫文件。

# -*- coding: utf-8 -*-

import scrapy

from new2.items import New2Item

class ItcastSpider(scrapy.Spider):

name = 'itcast' # 爬虫名

allowed_domains = ['me.sjtu.edu.cn'] #允许爬虫范围

start_urls = ['http://me.sjtu.edu.cn/academician.html'] #第一个爬取url

def parse(self, response):

# 通过scrapy内置的xpath规则解析网页,返回一个包含selector对象的列表

teacher_list = response.xpath('//div[@class="txtk"]')

# 实例化类

item = New2Item()

for each in teacher_list:

item['name'] = each.xpath('./p/b').extract()[0]

item['level'] = each.xpath('./p/text()').extract()[0]

item['info'] = each.xpath('./div/p/span').extract()[0]

yield item

4. 编写管道文件

管道文件pipelines的作用是将爬取内容保存到本地

# -*- coding: utf-8 -*-

# Define your item pipelines here

#

# Don't forget to add your pipeline to the ITEM_PIPELINES setting

# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html

import json

class New2Pipeline(object):

def __init__(self):

# 在本地创建teacher.json文件

self.filename = open('teacher.json', 'wb+')

def process_item(self, item, spider):

# python类型转化为json字符串

text = json.dumps(dict(item), ensure_ascii=False) + '\n'

# 写入

self.filename.write(text.encode('utf-8'))

return item

5. Setting文件

这里原本注释状态需要取消,不然无法运行。

6. 运行

在目录下,输入scrapy crawl itcast

笔者初学python、爬虫,欢迎交流,批评,谢谢各位大佬。

参考

怎么用python爬取老师_Python学习日记2的Scrapy框架。爬行教师信息,爬取相关推荐

  1. python怎么输入文件数据库_python学习日记——文件及数据库

    一.文件处理 1.文本文件(or二进制文件) with通过__enter__方法初始化,然后在__exit__中做善后以及处理异常,所以使用with处理的对象必须有__enter__()和__exit ...

  2. python爬虫架构设置_Python爬虫进阶三之Scrapy框架安装配置

    初级的爬虫我们利用urllib和urllib2库以及正则表达式就可以完成了,不过还有更加强大的工具,爬虫框架Scrapy,这安装过程也是煞费苦心哪,在此整理如下. Windows 平台: 我的系统是 ...

  3. Python爬虫之scrapy框架360全网图片爬取

    Python爬虫之scrapy框架360全网图片爬取 在这里先祝贺大家程序员节快乐,在此我也有一个好消息送给大家,本人已开通了微信公众号,我会把资源放在公众号上,还请大家小手动一动,关注过微信公众号, ...

  4. Crawler之Scrapy:数据挖掘必备的scrapy框架之最完整爬取网页内容攻略

    相关文章推荐 Scrapy:Python3版本上安装数据挖掘必备的scrapy框架详细攻略(二最完整爬取网页内容信息攻略) 目录 scrapy框架之最完整爬取网页内容攻略 scrapy框架之最完整爬取 ...

  5. scrapy某家租房信息爬取

    目的: 使用scrapy框架进行租房信息(杭州地区)爬取,包括小区名称,位置,价格,面积,房间朝向.户型等,然后把爬取的信息保存到本地csv表格中. 分析: 某家的网站爬取不难,看一下页面,需要爬取的 ...

  6. scrapy 斗鱼 主播信息爬取

    原文链接: scrapy 斗鱼 主播信息爬取 上一篇: scrapy 妹子图网站 全站图片爬取 下一篇: TensorFlow models 的slim 模块 使用预训练模型进行识别 api http ...

  7. python爬取豆瓣电影top250编码_Python学习日记1| 用python爬取豆瓣电影top250

    今天是3.17号. 离毕业论文开题只剩下不到15天,自己这边还不知道要写什么好,问了导师,导师给的范围超级广泛,实在是想吐槽.想了几天,决定了要尽快给老师说自己的想法和方向,做什么还是靠自己比较靠谱. ...

  8. python网页爬虫漫画案例_Python爬虫-用Scrapy框架实现漫画的爬取

    14.jpg 在之前一篇抓取漫画图片的文章里,通过实现一个简单的Python程序,遍历所有漫画的url,对请求所返回的html源码进行正则表达式分析,来提取到需要的数据. 本篇文章,通过 scrapy ...

  9. python从入门到_Python学习路线从入门到上手,如何快速Python学习?

    因为清晰易读的风格,广泛的适用性,Python已经成为最受欢迎的编程语言之一.在TIOBE 排行榜中位居第四,是名副其实的人工智能第一语言. 风靡的另一个原因是,Python有非常多的第三方库.比如用 ...

最新文章

  1. (第一次)NODEJS学习笔记
  2. An example of using Pandas for regression
  3. 洛谷 - P4062 [Code+#1]Yazid 的新生舞会(推公式+线段树)
  4. 【Git、GitHub、GitLab】十 将git仓库备份到本地
  5. [python]---从java到python(02)---多线程,队列
  6. 多图带你彻底理解Java中的21种锁!
  7. 数字人民币这一年,互联网企业做了什么?
  8. HNOI2019退役记
  9. linux下的C语言开发(ATT 汇编语言)
  10. POJ 2723 2-SAT
  11. Clojure 学习入门(17)- 异常处理
  12. ThinkPHP如果表名有下划线需要用Model应该怎么做?
  13. 我们为什么需要SDN?
  14. jsp上传文件到数据库和从数据库下载文件
  15. Dataformatstring属性设置(详解)
  16. linux+psp+模拟器下载,PSP1.5模拟器全教程+最新版本下载(最终版)
  17. SVN 版本回退 命令行
  18. 宽带拨号上服务器无响应,宽带拨号服务器无响应(图文)
  19. 2021,要这样学大数据开发
  20. aix小机Java64位安装包,aix 5.3不能安装java1.4 64位

热门文章

  1. 中国五十六个民族下拉列表源代码
  2. 视频格式《星星》背景音乐
  3. 数据库sql语句查询条数
  4. python+django固定资产管理系统项目源码
  5. 从U8 cloud看用友怎么定义云ERP
  6. ext 两个grid横向排列_Intel新研究:180°横向FOV的曲面VR光学模组,体积缩减二分之一...
  7. [jlink-ob] 解决The connected J-Link is defective提示框和仿真的问题
  8. Android drawable快速实现竖向ProgressBar
  9. java flv 转swf_java实现视频文件转换为flv(带文件缩略图)
  10. 宇龙酷派202笔试题