首先下载scrapy模块

这里有惊喜

https://www.cnblogs.com/bobo-zhang/p/10068997.html

创建一个scrapy文件

首先在终端找到一个文件夹

输入

scrapy startproject jy (项目件名)

修改setting文件配置

# Crawl responsibly by identifying yourself (and your website) on the user-agent
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36'# Obey robots.txt rules
ROBOTSTXT_OBEY = Fals

cd 到 spiders文件,在终端创建一个文件

scrapy genspider myjy(文件名) www.xxx.com

在文件里执行我们的第一个代码吧

#实现解析+持久化存储

# -*- coding: utf-8 -*-import scrapy

class FirstSpider(scrapy.Spider):#爬虫文件的名称    name = 'first' #允许的域名 #allowed_domains = ['www.xxx.com'] #起始url列表 start_urls = ['https://www.qiushibaike.com/text/']#实现了数据的基本解析操作 # def parse(self, response): # div_list = response.xpath('//div[@id="content-left"]/div') # for div in div_list: # #author = div.xpath('./div[1]/a[2]/h2/text()')[0].extract() # #如果可以保证xpath返回的列表中只有一个列表元素则可以使用extract_first(),否则必须使用extract() # author = div.xpath('./div[1]/a[2]/h2/text()').extract_first() # content = div.xpath('./a[1]/div/span//text()').extract() # content = ''.join(content) # print(author,content)

 #实现解析+持久化存储 #1.基于终端指令的持久化存储 # 只可以将parse方法的返回值持久化存储到本地的文本中 #2.基于管道的持久化存储

 # 1.基于终端指令的持久化存储 def parse(self, response): div_list = response.xpath('//div[@id="content-left"]/div') all_data = []for div in div_list:#author = div.xpath('./div[1]/a[2]/h2/text()')[0].extract() #如果可以保证xpath返回的列表中只有一个列表元素则可以使用extract_first(),否则必须使用extract() author = div.xpath('./div[1]/a[2]/h2/text()').extract_first() content = div.xpath('./a[1]/div/span//text()').extract() content = ''.join(content)

 dic = {'author':author, 'content':content }

 all_data.append(dic)

return all_data
 

最后运行文件

scrapy crawl myjy

#解析+管道持久化存储

首先在psrse里写入文件

# -*- coding: utf-8 -*-
import scrapyfrom bossPro.items import BossproItem
class BossSpider(scrapy.Spider):name = 'boss'# allowed_domains = ['www.xxx.com']start_urls = ['https://www.zhipin.com/job_detail/?query=python%E7%88%AC%E8%99%AB&scity=101010100&industry=&position=']url = 'https://www.zhipin.com/c101010100/?query=python爬虫&page=%d&ka=page-2'page = 1#解析+管道持久化存储def parse(self, response):li_list = response.xpath('//div[@class="job-list"]/ul/li')for li in li_list:job_name = li.xpath('.//div[@class="info-primary"]/h3/a/div/text()').extract_first()salary = li.xpath('.//div[@class="info-primary"]/h3/a/span/text()').extract_first()company = li.xpath('.//div[@class="company-text"]/h3/a/text()').extract_first()#实例化一个item对象item = BossproItem()#将解析到的数据全部封装到item对象中item['job_name'] = job_nameitem['salary'] = salaryitem['company'] = company#将item提交给管道yield itemif self.page <= 3:print('if 执行!!!')self.page += 1new_url = format(self.url%self.page)print(new_url)#手动请求发送yield scrapy.Request(url=new_url,callback=self.parse)

配置items.py文件,用来作为数据结构

import scrapyclass BossproItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()job_name = scrapy.Field()salary = scrapy.Field()company = scrapy.Field()

在pipelines.py里写入文件

# -*- 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.htmlimport pymysql
from redis import Redis
class BossproPipeline(object):fp = Nonedef open_spider(self, spider):print('开始爬虫......')self.fp = open('./boss.txt','w',encoding='utf-8')def close_spider(self, spider):print('结束爬虫......')self.fp.close()#爬虫文件每向管道提交一次item,则该方法就会被调用一次.#参数:item 就是管道接收到的item类型对象def process_item(self, item, spider):#print(item)self.fp.write(item['job_name']+':'+item['salary']+':'+item['company']+'\n')return item #返回给下一个即将被执行的管道类class mysqlPileLine(object):conn = Nonecursor =Nonedef open_spider(self,spider):self.conn = pymysql.Connect(host='127.0.0.1',port=3306,user='root',password='',db='scrapy',charset="utf8")print(self.conn)def process_item(self, item, spider):self.cursor = self.conn.cursor()# print(item)#print('insert into boss values ("%s","%s","%s")'%(item['job_name'],item['salary'],item['company']))try:print('insert into boss values ("%s","%s","%s")'%(item['job_name'],item['salary'],item['company']))self.cursor.execute('insert into boss values ("%s","%s","%s")'%(item['job_name'],item['salary'],item['company']))self.conn.commit()except Exception as e:print(e)self.conn.rollback()def close_spider(self,spider):self.conn.close()self.cursor.close()class redisPileLine(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):# print(item)dic = {'name':item['job_name'],'salary':item['salary'],'company':item['company']}self.conn.lpush('boss',dic)

别忘了在setting里面配置

ITEM_PIPELINES = {# 'boss.pipelines.BossPipeline': 300,'boss.pipelines.redisPipeline': 301,# 'boss.pipelines.mysqlPipeline': 302,
}

转载于:https://www.cnblogs.com/zhangqing979797/p/10458393.html

爬虫scrapy模块相关推荐

  1. 第三百二十六节,web爬虫,scrapy模块,解决重复ur——自动递归url

    第三百二十六节,web爬虫,scrapy模块,解决重复url--自动递归url 一般抓取过的url不重复抓取,那么就需要记录url,判断当前URL如果在记录里说明已经抓取过了,如果不存在说明没抓取过 ...

  2. 安装scrapy模块,创建一个Scrapy爬虫项目,并运行

    创建一个Scrapy项目,首先需要所需要的模块 一丶安装scrapy框架所有模块 1.第一个安装的依赖库是lxml ,命令是: pip install lxml 2.第二个依赖库是pyOpenSSL, ...

  3. 第三百二十五节,web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签...

    第三百二十五节,web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签 标签选择器对象 HtmlXPathSelector()创建标签选择器对象,参数接收response回调的html对象 ...

  4. 第三百二十四节,web爬虫,scrapy模块介绍与使用

    第三百二十四节,web爬虫,scrapy模块介绍与使用 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中. 其最初是为 ...

  5. python 爬虫 scrapy 和 requsts 哪个快_Scrapy爬虫框架结构以及和Requests库的比较

    爬虫框架 *爬虫框架是实现爬虫功能的一个软件结构和功能组件集合 *爬虫框架是一个半成品,能够帮助用户实现专业网络爬虫 Scrapy爬虫框架结构 "5+2"结构 Spiders(用户 ...

  6. python 爬虫框架_Python网络爬虫-scrapy框架的使用

    1. Scrapy 1.1 Scrapy框架的安装 Scrapy是一个十分强大的爬虫框架,依赖的库比较多,至少需要依赖的库有Twisted .lxml和pyOpenSSL.在不同的平台环境下,它所依赖 ...

  7. python爬取豆瓣电影top250_Python爬虫 - scrapy - 爬取豆瓣电影TOP250

    0.前言 新接触爬虫,经过一段时间的实践,写了几个简单爬虫,爬取豆瓣电影的爬虫例子网上有很多,但都很简单,大部分只介绍了请求页面和解析部分,对于新手而言,我希望能够有一个比较全面的实例.所以找了很多实 ...

  8. 从入门到入土:python爬虫|scrapy初体验|安装教程|爬取豆瓣电影短评相关信息(昵称,内容,时间和评分)

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  9. Python爬虫——Scrapy 的基本使用

    文章目录 Python爬虫--Scrapy 的基本使用 1.创建 Scrapy 爬虫项目 2.Scrapy-创建爬虫文件 3.Scrapy-运行爬虫文件 Python爬虫--Scrapy 的基本使用 ...

最新文章

  1. nChain首席科学家CSW:闪电网络会把BCE变成空洞的幽灵
  2. 解决vscode格式化vue文件出现的问题
  3. 李东生:管理者不能变成诸葛先生
  4. android 自定义水波纹点击效果Button
  5. 一题多解(八)—— 矩阵上三角(下三角)的访问
  6. PouchContainer 开源版本及内部版本一致性实践
  7. LibSvm使用说明和LibSvm源码解析
  8. Java程序设计以及实验指导 实验笔记
  9. 58失去“神奇”魔法
  10. wav是什么格式?怎么转成mp3?
  11. js对象扁平化:Javascript对象进行扁平化处理
  12. Ext.js 自定义桌面注意
  13. 怎么在第一个 PDF 文件的中间,插入第二个 PDF 文件的内容?
  14. 基于神经网络的车牌识别,卷积神经网络车牌识别
  15. 数据结构与算法《二分查找》
  16. 解决英伟达CUDA和cuDNN下载过慢的问题
  17. 滴滴柳青:一个比你有才,又比你努力的富二代!
  18. Kali [dnsenum]子域名查询工具
  19. 小红书能往天猫引流吗?精准大揭秘
  20. 噪音声压和声功率的区别_声学基础知识(三):声压、声功率和声强的联系与区别-下...

热门文章

  1. Python sum函数- Python零基础入门教程
  2. PWN题[强网先锋]no_output
  3. linux 镜像错误,VituralBox 使用已有镜像文件报错:E_INVALIDARG (0x80070057)
  4. java设计模式之道文字版,Java Web设计模式之道 PDF
  5. python123九宫格输入法_《啊哈C语言-2016最新修正版》.pdf
  6. MySql和Oracle数据库的区别?
  7. oracle的一些基本操作,Oracle中的一些基本操作
  8. 【Java中级篇】动态代理机制
  9. 1445.32php,nginx实现mysql的负载均衡
  10. 《软件项目管理(第二版)》第 2 章——项目准备和启动 重点部分总结