我们在pycharm上爬取

首先我们可以在本文件打开命令框或在Terminal下创建

scrapy startproject xiaohuaPro   ------------创建文件

scrapy genspider xiaohua www.xxx.com  ----------创建执行文件

一.首先我们要进行数据的爬取 

import scrapy
from xioahuaPro.items import XioahuaproItemclass XiaohuaSpider(scrapy.Spider):name = 'xiaohua'start_urls=['http://www.521609.com/daxuemeinv/']#生成一个通用的url模板url = 'http://www.521609.com/daxuemeinv/list8%d.html'pageNum =1def parse(self, response):li_list=response.xpath('//div[@class="index_img list_center"]/ul/li')for li in li_list:name = li.xpath('./a[2]/text() | ./a[2]/b/text()').extract_first()img_url = 'http://www.521609.com'+li.xpath('./a[1]/img/@src').extract_first()#实例化一个item类型的对象item = XioahuaproItem()item['name'] = nameitem['img_url'] = img_url#item提交给管道yield item# 对其他页码的url进行手动i请求的发送if self.pageNum <= 24:   ------爬取的页数self.pageNum += 1new_url = format(self.url%self.pageNum)yield scrapy.Request(url=new_url,callback=self.parse)

之后再items.py文件下为item对象设置属性

将爬取到的所有信息全部设置为item的属性

# -*- coding: utf-8 -*-# Define here the models for your scraped items
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/items.htmlimport scrapyclass XioahuaproItem(scrapy.Item):# define the fields for your item here like:name = scrapy.Field()img_url = scrapy.Field()

二.写入pipelines.py内容

首先写入到自定义的文件里去

作用:将解析到的数据存储到某一个平台中。
import pymysql
from redis import Redis
class XioahuaproPipeline(object):fp = Nonedef open_spider(self,spider):print('开始爬虫!')self.fp = open('./xiaohua.txt','w',encoding='utf-8')#作用:实现持久化存储的操作#该方法的item参数就可以接收爬虫文件提交过来的item对象#该方法每接收一个item就会被调用一次(调用多次)def process_item(self, item, spider):name = item['name']img_url = item['img_url']self.fp.write(name+':'+img_url+'\n')#返回值的作用:就是将item传递给下一个即将被执行的管道类return item
#
    def close_spider(self,spider):print('结束爬虫!')self.fp.close()
#

写到数据库里面,我们要在数据库里面创建个表(将mysql和redis都启动)

class MysqlPipeline(object):conn = Nonecursor = Nonedef open_spider(self, spider):#解决数据库字段无法存储中文处理:alter table tableName convert to charset utf8;self.conn = pymysql.Connect(host='127.0.0.1',port=3306,user='root',password='123',db='test',charset='utf8')print(self.conn)def process_item(self, item, spider):self.cursor = self.conn.cursor()try:self.cursor.execute('insert into xiaohua values ("%s","%s")'%(item['name'],item['img_url']))self.conn.commit()except Exception as e:print(e)self.conn.rollback()return itemdef close_spider(self, spider):self.cursor.close()self.conn.close()

在相同的文件下创建redis类写入数据

class RedisPipeline(object):conn = Nonedef open_spider(self, spider):self.conn = Redis(host='127.0.0.1',port=6379)print(self.conn)def process_item(self, item, spider):dic = {'name':item['name'],'img_url':item['img_url']}print(str(dic))self.conn.lpush('xiaohua',str(dic))return itemdef close_spider(self, spider):pass

三.更改配置文件,在settings.py里面

#添加上这行代码USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'# Obey robots.txt rules
ROBOTSTXT_OBEY = False       -----改成False

ITEM_PIPELINES = {'xioahuaPro.pipelines.XioahuaproPipeline': 300,  ---对应文件# 'xioahuaPro.pipelines.MysqlPipeline': 301,    ----对应数据库# 'xioahuaPro.pipelines.RedisPipeline': 302,    -----对应redis
}LOG_LEVEL = 'ERROR'                 # CRITICAL --严重错误            #ERROR    ---一般错误            #WARNING ---警告信息            #INFO  ---一般信息            #DEBUG  --调试信息

然后我们在终端去指定爬虫程序

scrapy  crawl    名字(name对应的值)

转载于:https://www.cnblogs.com/tianshuai1/p/10841290.html

利用scrapy爬取文件后并基于管道化的持久化存储相关推荐

  1. Python利用Scrapy爬取前程无忧

    ** Python利用Scrapy爬取前程无忧 ** 一.爬虫准备 Python:3.x Scrapy PyCharm 二.爬取目标 爬取前程无忧的职位信息,此案例以Python为关键词爬取相应的职位 ...

  2. 利用scrapy爬取京东移动端的图片素材和商品信息

    有一个练习项目需要一些带分类信息的商品测试图片,从现有的电商网站爬取是个不错的选择.刚好最近又在练习scrapy的使用,这一篇记录一下用scrapy爬取京东的图片素材并保存商品信息的思路. 文中代码共 ...

  3. 利用Scrapy爬取1905电影网

    本文将从以下几个方面讲解Scrapy爬虫的基本操作 Scrapy爬虫介绍 Scrapy安装 Scrapy实例--爬取1905电影网 相关资料 Scrapy 爬虫介绍 Scrapy是Python开发的一 ...

  4. 利用scrapy爬取豆瓣top250

    前言(目的) 本文为scrapy爬虫的入门文章,作者尽量将自己刚开始学习所遇到的问题都还原出来,过程尽量写得详细详细再详细.希望通过这篇文章来记录自己刚开始学习爬虫所踩过的一些坑,同时记录下自己处理和 ...

  5. Python利用Scrapy爬取智联招聘和前程无忧的招聘数据

    爬虫起因   前面两个星期,利用周末的时间尝试和了解了一下Python爬虫,紧接着就开始用Scrapy框架做了一些小的爬虫,不过,由于最近一段时间的迷茫,和处于对职业生涯的规划.以及对市场需求的分析, ...

  6. 爬虫实战(一)利用scrapy爬取豆瓣华语电影

    爬虫第一个项目是爬取豆瓣华语电影,后面将对这部分数据进行分析. 本文也是发表于『运筹OR帷幄』微信公众号的<用数据带你了解电影行业-华语篇>的爬虫介绍篇. 1. 爬取思路 在观察了豆瓣每个 ...

  7. scrapy mysql 词云_利用Scrapy爬取姓名大全作词云分析

    scrapy介绍 Scrapy 是一套基于Twisted.纯python实现的异步爬虫框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,相当的方便- 整体架构和组 ...

  8. scrapy mysql 豆瓣_利用Scrapy爬取豆瓣图书并保存至Mysql数据库

    Scrapy是一个纯Python语言写的爬虫框架,本次用它来爬取豆瓣图书的数据. 准备工作 没有安装Scrapy的同学需要安装一下,有两种方式安装: 安装了Anaconda的同学直接在命令行输入con ...

  9. scrapy 智联 mysql_Python利用Scrapy爬取智联招聘和前程无忧的招聘数据

    爬虫起因 前面两个星期,利用周末的时间尝试和了解了一下Python爬虫,紧接着就开始用Scrapy框架做了一些小的爬虫,不过,由于最近一段时间的迷茫,和处于对职业生涯的规划.以及对市场需求的分析,我通 ...

最新文章

  1. 数据预处理为什么使用独热编码one-hot
  2. 【FPGA】Buffer专题介绍(一)
  3. mysql 数据库名字 mac,【已解决】Mac本地给mysql数据库改名
  4. Web service 超过了最大请求长度错误解决
  5. 循环神经网络——裁剪梯度(应对梯度爆炸)
  6. avs3 ts格式封装 标准_超能课堂(204):多媒体容器格式变迁录
  7. 音视频的采集、编码、封包成 mp4 输出
  8. vue项目中配置eslint和prettier
  9. 关于metasploit的一些架构目录
  10. android跑马灯效果不起作用,Android实现跑马灯效果的方法
  11. OSGB压缩算法有哪些?
  12. 2021年如何通过网络赚钱
  13. 多线程+SOCKET编程实现qq群聊的服务端和客户端
  14. 微信聊天记录不小心被删了怎么办?看看如何恢复吧!
  15. TiDB 在 58 集团的应用与实践
  16. 启动虚拟机报错:.vmss”还原虚拟机状态时出错。 错误导致继续运行操作失败。请保留挂起状态并纠正错误,或放弃挂起状态。
  17. python之dlib使用摄像头实时检测人脸
  18. Python自制恶搞virus
  19. 使用Inno Setup软件直接给安装程序和卸载程序加数字签名
  20. 金融计量模型(三):工具变量法

热门文章

  1. python 无序列表中第k大元素_Python要求O(n)复杂度求无序列表中第K的大元素实例...
  2. 电脑安装python后开不了机_Python学习第145课——关于无法正常启动centOS问题的解决方案...
  3. 1.4编程基础之逻辑表达式与条件分支_16三角形判断(9分)
  4. C++设计模式-迭代器模式
  5. Java笔记-通过注解和插件自动生成get/set和toString方法,使代码结构清晰
  6. Wireshark工作笔记-对TCP连接与断开以及数据传输的实战分析
  7. 让我们来比较C#,C++和Java之间重写虚函数的区别
  8. java中点击按钮出现echarts图表_echarts 显示下载按钮,echarts 自定义按钮,echarts 添加按钮...
  9. arm linux挂载ubi,挂载ubifs文件系统分区
  10. python xposed_GitHub - twqdev/CPWechatXposed: 使用Xposed Hook微信等APP