一、安装&基础命令
#安装:
pip install scrapy
创建项目:
scrapy startproject 项目名
# 进入项目目录下创建爬虫:
scrapy genspider 爬虫名
查看爬虫:
scrapy list
运行爬虫:
scrapy crawl 爬虫名
运行爬虫后自动生成文件:
scrapy crawl 爬虫名 -o 文件名.csv (支持 'json', 'jsonlines', 'jl', 'csv', 'xml', 'marshal', 'pickle')
三、基础使用
爬取 学校大全 的 学校名 和 地址 并输出到 csv文件中
1、创建项目
scrapy startproject scrapydemo
2、cd进入到项目中,创建爬虫
scrapy genspider spidername
3、在创建的spidername.py文件中编辑内容
import scrapy
# 导入在items中写好的类
from Scyapydemo.items import TestspiderItem
import time
# 编写爬虫
class RunoobSpider(scrapy.Spider):
name = 'spidername' # 文件名
allowed_domains = ['ruyile.com'] # 允许访问的网址
start_urls = ['https://www.ruyile.com/xuexiao/?a=44&t=2'] # 开始访问的网址
def parse(self, response):
try:
course = TestspiderItem() # 实例化一个Item数据对象
# 获取class为"sk"的节点
courseInfos = response.xpath('//div[@class="sk"]')
# 遍历节点
for courseInfo in courseInfos:
# 根据需求提取指定数据并存入Item的对象中
course['SchoolName'] = courseInfo.xpath('.//h4/a/text()').extract_first()
course['a_Province'] = "北京"
course['b_City'] = "北京"
course['c_District'] = "海淀"
course['d_Address'] = courseInfo.xpath('.//text()[2]').extract_first()
# time.sleep(1)
yield course
# 判断是否存在下一页
next_page = response.xpath('//div[@class="fy"]/a[7]/@href').extract_first() # 取出来下一页的链接
# 判断是否存在内容
if next_page is not None:
next_page = response.urljoin(next_page)
yield scrapy.Request(next_page, callback=self.parse)
except Exception as err:
print('出现异常' + str(err))
4、在item文件中定义结构化数据字段,用于保存爬取的数据
import scrapy
class TestspiderItem(scrapy.Item):
SchoolName = scrapy.Field() #学校名
a_Province = scrapy.Field() #省
b_City = scrapy.Field() # 市
c_District = scrapy.Field() # 区
d_Address = scrapy.Field() # 地址
5、运行爬虫并保存csv文件
scrapy crawl spidername -o school.csv
网友评论