我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python scrapy实战糗事百科保

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python scrapy实战糗事百科保

 

编写qsbk_spider.py爬虫文件

# -*- coding: utf-8 -*-
import scrapy
from qsbk.items import QsbkItem
from scrapy.http.response.html import HtmlResponse
from scrapy.selector.unified import SelectorList

class QsbkSpiderSpider(scrapy.Spider):
    name = 'qsbk_spider'
    allowed_domains = ['qiushibaike.com']
    start_urls = ['https://www.qiushibaike.com/text/']

    def parse(self, response):
        duanzidiv=response.xpath("//div[@id='content-left']/div")
        for duanzidivs in duanzidiv:
            author=duanzidivs.xpath(".//h2/text()").get().strip()
            content=duanzidivs.xpath(".//div[@class='content']//text()").getall()
            content="".join(content).strip()
           #调用pipelines文件,存取数据到json文件里面
            # duanzi={"author":author,"content":content}
            item=QsbkItem(author=author,content=content)
            yield item

编写items.py文件

# -*- coding: utf-8 -*-

# Define here the models for your scraped items
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/items.html

import scrapy


class QsbkItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    author=scrapy.Field()
    content=scrapy.Field()

编写pipelines.py文件保存数据到duanzi.json文件里

# -*- 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.html

import json
class QsbkPipeline(object):
    def __init__(self):
        self.fp=open("duanzi.json",'w',encoding='utf-8')

    def open_spider(self,spider):
        print("爬虫开始了...")

    def process_item(self, item, spider):
        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("爬虫结束了...")

编写start.py爬虫启动文件

# -*- coding:utf-8 -*-
#作者:    baikai  
#创建时间: 2018/12/14 9:16 
#文件:    start.py  
#IDE:    PyCharm
from scrapy import cmdline

# cmdline.execute("scrapy crawl shuju_spider".split())
cmdline.execute(["scrapy","crawl","qsbk_spider"])

设置settings.py文件相关配置

运行start.py文件爬取网站数据并保存到duanzi.json文件里

 

 

# Scrapy笔记
## 安装scrapy框架:
1. 安装`scrapy`:通过`pip install scrapy`即可安装。
2. 如果在windows下,还需要安装`pypiwin32`,如果不安装,那么以后运行scrapy项目的时候就会报错。安装方式:`pip install pypiwin32`。
3. 如果是在ubuntu下,还需要安装一些第三方库:`sudo apt-get install python-dev python-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev`。

## 创建项目和爬虫:
1. 创建项目:`scrapy startproject [爬虫的名字]`。
2. 创建爬虫:进入到项目所在的路径,执行命令:`scrapy genspider [爬虫名字] [爬虫的域名]`。注意,爬虫名字不能和项目名称一致。

## 项目目录结构:
1. items.py:用来存放爬虫爬取下来数据的模型。 
2. middlewares.py:用来存放各种中间件的文件。 
3. pipelines.py:用来将items的模型存储到本地磁盘中。 
4. settings.py:本爬虫的一些配置信息(比如请求头、多久发送一次请求、ip代理池等)。 
5. scrapy.cfg:项目的配置文件。 
6. spiders包:以后所有的爬虫,都是存放到这个里面。

## 糗事百科Scrapy爬虫笔记:
1. response是一个`scrapy.http.response.html.HtmlResponse`对象。可以执行`xpath`和`css`语法来提取数据。
2. 提取出来的数据,是一个`Selector`或者是一个`SelectorList`对象。如果想要获取其中的字符串。那么应该执行`getall`或者`get`方法。
3. getall方法:获取`Selector`中的所有文本。返回的是一个列表。
4. get方法:获取的是`Selector`中的第一个文本。返回的是一个str类型。
5. 如果数据解析回来,要传给pipline处理。那么可以使用`yield`来返回。或者是收集所有的item。最后统一使用return返回。
6. item:建议在`items.py`中定义好模型。以后就不要使用字典。
7. pipeline:这个是专门用来保存数据的。其中有三个方法是会经常用的。
    * `open_spider(self,spider)`:当爬虫被打开的时候执行。
    * `process_item(self,item,spider)`:当爬虫有item传过来的时候会被调用。
    * `close_spider(self,spider)`:当爬虫关闭的时候会被调用。
    要激活piplilne,应该在`settings.py`中,设置`ITEM_PIPELINES`。示例如下:
    ```python
    ITEM_PIPELINES = {
       'qsbk.pipelines.QsbkPipeline': 300,
    }
    ```

## JsonItemExporter和JsonLinesItemExporter:
保存json数据的时候,可以使用这两个类,让操作变得得更简单。
1. `JsonItemExporter`:这个是每次把数据添加到内存中。最后统一写入到磁盘中。好处是,存储的数据是一个满足json规则的数据。坏处是如果数据量比较大,那么比较耗内存。
示例代码如下: ```python from scrapy.exporters import JsonItemExporter class QsbkPipeline(object): def __init__(self): self.fp = open("duanzi.json",'wb') self.exporter = JsonItemExporter(self.fp,ensure_ascii=False,encoding='utf-8') self.exporter.start_exporting() def open_spider(self,spider): print('爬虫开始了...') def process_item(self, item, spider): self.exporter.export_item(item) return item def close_spider(self,spider): self.exporter.finish_exporting() self.fp.close() print('爬虫结束了...') ``` 2. `JsonLinesItemExporter`:这个是每次调用`export_item`的时候就把这个item存储到硬盘中。坏处是每一个字典是一行,整个文件不是一个满足json格式的文件。
好处是每次处理数据的时候就直接存储到了硬盘中,这样不会耗内存,数据也比较安全。示例代码如下: ```python from scrapy.exporters import JsonLinesItemExporter class QsbkPipeline(object): def __init__(self): self.fp = open("duanzi.json",'wb') self.exporter = JsonLinesItemExporter(self.fp,ensure_ascii=False,encoding='utf-8') def open_spider(self,spider): print('爬虫开始了...') def process_item(self, item, spider): self.exporter.export_item(item) return item def close_spider(self,spider): self.fp.close() print('爬虫结束了...') ```

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python scrapy实战糗事百科保

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python scrapy实战糗事百科保

编写qsbk_spider.py爬虫文件# -*- coding: utf-8 -*-import scrapyfrom qsbk.items import QsbkItemfrom scrapy.http.response.html im
2023-01-30

Python 制作糗事百科爬虫实例

早上起来闲来无事做,莫名其妙的就弹出了糗事百科的段子,转念一想既然你送上门来,那我就写个爬虫到你网站上爬一爬吧,一来当做练练手,二来也算找点乐子。 其实这两天也正在接触数据库的内容,可以将爬取下来的数据保存在数据库中,以待以后的利用。好了,
2022-06-04

Python 简单爬虫抓取糗事百科

该爬虫主要实现的功能是抓取糗事百科里面的一些段子。    urllib2可以用urllib2.openurl中设置Request参数,来修改Header头。如果你访问一个网站,想更改User Agent(可以伪装你的浏览器),你就要用url
2023-01-31

Python爬取糗事百科所有段子

import requestsfrom lxml import etreeimport timeheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) Apple
2023-01-31

Python项目实战:爬取糗事百科最热门的内涵搞笑段子

前言相信大家都很喜欢非常喜欢看那种神奇的段子,和下面神评论,哈哈,简直就是笑死人,不偿命,今天就为大家介绍一个爬取糗事百科最热门的内涵段子的案例,让你在敲代码过程,有点烦心的时候,就可以看看最新的搞笑内涵段子了,是不是超棒的呢导入基本库
2023-06-02

如何使用python抓取糗事百科笑话

这篇文章将为大家详细讲解有关如何使用python抓取糗事百科笑话,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。抓取流程:传入参数起始url和输出文件名称,使用urllib2对页面进行抓取,每次抓取一个页面
2023-06-03

使用Python爬取糗事百科热门文章

默认情况下取糗事百科热门文章只有35页,每页20条,根据下面代码可以一次性输出所有的文章,也可以选择一次输出一条信息,回车继续。不支持图片内容的显示,显示内容包括作者,热度(觉得好笑的人越多,热度越高),内容。从热度最高开始显示到最低。实现
2023-01-31

玩转python爬虫之爬取糗事百科段子

大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧。那么这次为大家带来,Python爬取糗事百科的小段子的例子。 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来。
2022-06-04

Python项目实战:百度百科关键字搜索信息

前言今天为大家利用Python的format转发关键字来获取百度百科搜索信息,比如说你不懂一个名词,动词是什么意思,你可上百度百科上面自行搜索,今天用Python模拟百度百科搜索信息功能导入第三方库
2023-06-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录