scrapy爬取数据学习
【摘要】 1.scrapy安装pip isntall scrapy 2.新建项目scrapy startproject mySpider(p2) PS C:\Users\livingbody\Desktop> scrapy startproject mySpiderNew Scrapy project 'mySpider', using template directory 'C:\minicond...
1.scrapy安装
pip isntall scrapy
2.新建项目
scrapy startproject mySpider
(p2) PS C:\Users\livingbody\Desktop> scrapy startproject mySpider
New Scrapy project 'mySpider', using template directory 'C:\miniconda3\envs\p2\lib\site-packages\scrapy\templates\project', created in:
C:\Users\livingbody\Desktop\mySpider
You can start your first spider with:
cd mySpider
scrapy genspider example example.com
scrapy.cfg :项目的配置文件
mySpider/ :项目的Python模块,将会从这里引用代码
mySpider/items.py :项目的目标文件
mySpider/pipelines.py :项目的管道文件
mySpider/settings.py :项目的设置文件
mySpider/spiders/ :存储爬虫代码目录
3.明确目标
计划爬取 https://www.itcast.cn/channel/teacher.shtml网站讲师姓名、职称和个人信息
-
Item 定义结构化数据字段,用来保存爬取到的数据,有点像Python中的dict,但是提供了一些额外的保护减少错误。
-
可以通过创建一个 scrapy.Item 类, 并且定义类型为 scrapy.Field的类属性来定义一个Item。
-
接下来,创建一个ItcastItem 类,和构建item模型(model)。
import scrapy
class ItcastItem(scrapy.Item):
name=scrapy.Field()
level=scrapy.Field()
info=scrapy.Field()
4.爬取数据
在mySpider/spider目录创建一个名为itcast爬虫,指定爬取域为:
scrapy genspider itcast "itcast.cn"
(p2) PS C:\Users\livingbody\Desktop\mySpider> tree /f
卷 Windows 的文件夹 PATH 列表
卷序列号为 6C51-3930
C:.
│ scrapy.cfg
│
└─mySpider
│ items.py
│ middlewares.py
│ pipelines.py
│ settings.py
│ __init__.py
│
├─spiders
│ │ itcast.py
│ │ __init__.py
│ │
│ └─__pycache__
│ __init__.cpython-39.pyc
│
└─__pycache__
settings.cpython-39.pyc
__init__.cpython-39.pyc
import scrapy
class ItcastSpider(scrapy.Spider):
name = 'itcast'
allowed_domains = ['itcast.cn']
start_urls = ['http://itcast.cn/']
def parse(self, response):
pass
在此基础上进行修改
import scrapy
class ItcastSpider(scrapy.Spider):
name = 'itcast'
allowed_domains = ['itcast.cn']
start_urls = ["http://www.itcast.cn/channel/teacher.shtml",]
def parse(self, response):
with open('teacher.html','w', encoding='utf-8') as f:
f.write(response.text)
scrapy crawl itcast
爬取完毕
5.取数据
import scrapy
from mySpider.items import ItcastItem
class ItcastSpider(scrapy.Spider):
name = "itcast"
allowed_domains = ["itcast.cn"]
start_urls = ("http://www.itcast.cn/channel/teacher.shtml",)
def parse(self, response):
#open("teacher.html","wb").write(response.body).close()
# 存放老师信息的集合
items = []
for each in response.xpath("//div[@class='li_txt']"):
# 将我们得到的数据封装到一个 `ItcastItem` 对象
item = ItcastItem()
#extract()方法返回的都是字符串
name = each.xpath("h3/text()").extract()
title = each.xpath("h4/text()").extract()
info = each.xpath("p/text()").extract()
#xpath返回的是包含一个元素的列表
item['name'] = name[0]
item['title'] = title[0]
item['info'] = info[0]
items.append(item)
# 直接返回最后数据
return items
6.保存数据
scrapy保存信息的最简单的方法主要有四种,-o 输出指定格式的文件,命令如下:
# json格式,默认为Unicode编码
scrapy crawl itcast -o teachers.json
# json lines格式,默认为Unicode编码
scrapy crawl itcast -o teachers.jsonl
# csv 逗号表达式,可用Excel打开
scrapy crawl itcast -o teachers.csv
# xml格式
scrapy crawl itcast -o teachers.xml
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)