怎么用python爬取老师_Python学习日记2的Scrapy框架。爬行教师信息,爬取
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框架。爬行教师信息,爬取相关推荐
- python怎么输入文件数据库_python学习日记——文件及数据库
一.文件处理 1.文本文件(or二进制文件) with通过__enter__方法初始化,然后在__exit__中做善后以及处理异常,所以使用with处理的对象必须有__enter__()和__exit ...
- python爬虫架构设置_Python爬虫进阶三之Scrapy框架安装配置
初级的爬虫我们利用urllib和urllib2库以及正则表达式就可以完成了,不过还有更加强大的工具,爬虫框架Scrapy,这安装过程也是煞费苦心哪,在此整理如下. Windows 平台: 我的系统是 ...
- Python爬虫之scrapy框架360全网图片爬取
Python爬虫之scrapy框架360全网图片爬取 在这里先祝贺大家程序员节快乐,在此我也有一个好消息送给大家,本人已开通了微信公众号,我会把资源放在公众号上,还请大家小手动一动,关注过微信公众号, ...
- Crawler之Scrapy:数据挖掘必备的scrapy框架之最完整爬取网页内容攻略
相关文章推荐 Scrapy:Python3版本上安装数据挖掘必备的scrapy框架详细攻略(二最完整爬取网页内容信息攻略) 目录 scrapy框架之最完整爬取网页内容攻略 scrapy框架之最完整爬取 ...
- scrapy某家租房信息爬取
目的: 使用scrapy框架进行租房信息(杭州地区)爬取,包括小区名称,位置,价格,面积,房间朝向.户型等,然后把爬取的信息保存到本地csv表格中. 分析: 某家的网站爬取不难,看一下页面,需要爬取的 ...
- scrapy 斗鱼 主播信息爬取
原文链接: scrapy 斗鱼 主播信息爬取 上一篇: scrapy 妹子图网站 全站图片爬取 下一篇: TensorFlow models 的slim 模块 使用预训练模型进行识别 api http ...
- python爬取豆瓣电影top250编码_Python学习日记1| 用python爬取豆瓣电影top250
今天是3.17号. 离毕业论文开题只剩下不到15天,自己这边还不知道要写什么好,问了导师,导师给的范围超级广泛,实在是想吐槽.想了几天,决定了要尽快给老师说自己的想法和方向,做什么还是靠自己比较靠谱. ...
- python网页爬虫漫画案例_Python爬虫-用Scrapy框架实现漫画的爬取
14.jpg 在之前一篇抓取漫画图片的文章里,通过实现一个简单的Python程序,遍历所有漫画的url,对请求所返回的html源码进行正则表达式分析,来提取到需要的数据. 本篇文章,通过 scrapy ...
- python从入门到_Python学习路线从入门到上手,如何快速Python学习?
因为清晰易读的风格,广泛的适用性,Python已经成为最受欢迎的编程语言之一.在TIOBE 排行榜中位居第四,是名副其实的人工智能第一语言. 风靡的另一个原因是,Python有非常多的第三方库.比如用 ...
最新文章
- (第一次)NODEJS学习笔记
- An example of using Pandas for regression
- 洛谷 - P4062 [Code+#1]Yazid 的新生舞会(推公式+线段树)
- 【Git、GitHub、GitLab】十 将git仓库备份到本地
- [python]---从java到python(02)---多线程,队列
- 多图带你彻底理解Java中的21种锁!
- 数字人民币这一年,互联网企业做了什么?
- HNOI2019退役记
- linux下的C语言开发(ATT 汇编语言)
- POJ 2723 2-SAT
- Clojure 学习入门(17)- 异常处理
- ThinkPHP如果表名有下划线需要用Model应该怎么做?
- 我们为什么需要SDN?
- jsp上传文件到数据库和从数据库下载文件
- Dataformatstring属性设置(详解)
- linux+psp+模拟器下载,PSP1.5模拟器全教程+最新版本下载(最终版)
- SVN 版本回退 命令行
- 宽带拨号上服务器无响应,宽带拨号服务器无响应(图文)
- 2021,要这样学大数据开发
- aix小机Java64位安装包,aix 5.3不能安装java1.4 64位
热门文章
- 中国五十六个民族下拉列表源代码
- 视频格式《星星》背景音乐
- 数据库sql语句查询条数
- python+django固定资产管理系统项目源码
- 从U8 cloud看用友怎么定义云ERP
- ext 两个grid横向排列_Intel新研究:180°横向FOV的曲面VR光学模组,体积缩减二分之一...
- [jlink-ob] 解决The connected J-Link is defective提示框和仿真的问题
- Android drawable快速实现竖向ProgressBar
- java flv 转swf_java实现视频文件转换为flv(带文件缩略图)
- 宇龙酷派202笔试题