scrapy 爬取糗事百科段子篇章一

目前还是简单的爬取数据,目前的数据不完全, 个人目前相当于做个笔记,可简单的做个参看。
在这里插入图片描述

一、创建爬虫项目

scrapy  startproject ITtest
startproject	#开始创建项目
ITtest01		#创建项目名

在这里插入图片描述

二、生成爬虫

cd  qiushi/qiushi/spiders  &&  scrapy  genspider ITtest  www.qiushibaike.com/text/page/1
cat ITtest.py

在这里插入图片描述
上面说到url地址,现在说明分析下:
1、访问第二页
在这里插入图片描述
2、接着url路由将2改成1试试
在这里插入图片描述

三、配置爬虫文件
vim settings.py

BOT_NAME = 'qiushi'
SPIDER_MODULES = ['qiushi.spiders']
NEWSPIDER_MODULE = 'qiushi.spiders'
ROBOTSTXT_OBEY = False   #不遵守robots 协议
CONCURRENT_REQUESTS = 3  #隔3s爬取一次(正常普通网友点击全部页面的话3分钟)
COOKIES_ENABLED = False    
DEFAULT_REQUEST_HEADERS = {
   'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
   'Accept-Language': 'en',
   'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'    #模拟用户浏览器的型号
}
ITEM_PIPELINES = {
    'qiushi.pipelines.QiushiPipeline': 300, #优先级
}

在这里插入图片描述

四、自定义item字段

vim  items.py

在这里插入图片描述
五、编写爬虫文件

vim ITtest.py
import scrapy
from qiushi.items import QiushiItem   #导入糗事项目下items中QiushiItem函数
from scrapy.http.response.html import HtmlResponse   #导入HtmlXPathSelector模块
from scrapy.selector.unified   import SelectorList   #导入SelectorList模块

class IttestSpider(scrapy.Spider):
    name = 'ITtest'
    allowed_domains = ['www.qiushibaike.com']
    start_urls = ['https://www.qiushibaike.com/text/page/1/']
    bash_domain = "https://www.qiushibaike.com"

    def parse(self, response):
        body = response.xpath('//div[@class="col1 old-style-col1"]/div')
        for duanzhi in body:
            touxiang = duanzhi.xpath('.//div//@src').get()
            neirong = duanzhi.xpath('.//div[@class="content"]//text()').getall()
            neirong = "".join(neirong).strip()
            zuozhe  = duanzhi.xpath('.//div//h2/text()').get().strip()
            item = QiushiItem(头像=touxiang,作者=zuozhe,内容=neirong)
            yield item
        next_url = response.xpath("//ul[@class='pagination']/li[last()]/a/@href").get()
        if not next_url:
            return
        else:
            yield  scrapy.Request(self.bash_domain+next_url,callback=self.parse)

六、检查爬虫语法

 scrapy check ITtest

在这里插入图片描述

七、执行爬虫脚本

scrapy  crawl  ITtest

在这里插入图片描述
八、数据处理储存

vim pipelines.py
from itemadapter import ItemAdapter
import json

class QiushiPipeline:
    def __init__(self):
        #open自动判断是否有文件有则不进行创建。w写入,字符编码中文
        self.fp = open("qiushi.json","w",encoding='utf-8')

    def process_item(self, item, spider):
        print("爬虫开始")

    def process_item(self, item, spider):
        #json.dumps 序列化时对中文默认使用的ascii编码.想输出真正的中文需要指定ensure_ascii=False
        #item_json = json.dumps(item,ensure_ascii=False)
        item_json = json.dumps(dict(item),ensure_ascii=False)
        self.fp.write(item_json+'\n')
        return item

    def close_spider(self,spider):
        #关闭文件流
        self.fp.close()
        print("爬虫结束了")

九、再次执行

scrapy crawl ITtest

在这里插入图片描述

cat qiushi.json  -n

在这里插入图片描述
我们随便哪一个头像的url访问试试
在这里插入图片描述

后期规划,目前只是入门的爬虫还需要优化,后期将使用mongodb、redis作为缓存与存储,当爬虫脚本多起来将制作成docker镜像放入k8s中保证服务的稳定。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值