Python scrapy爬取小说代码案例详解

scrapy是目前python使用的最广泛的爬虫框架

架构图如下

解释:

  • Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。
  • Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。
  • Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,
  • Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器),
  • Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.
  • DownloaderMiddlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests

一。安装

pip install Twisted.whl

pip install Scrapy

Twisted的版本要与安装的python对应,https://jingyan.baidu.com/article/1709ad8027be404634c4f0e8.html

二。代码

本实例采用xpaths解析页面数据

按住shift-右键-在此处打开命令窗口

输入scrapy startproject qiushibaike 创建项目

输入scrapy genspiderqiushibaike 创建爬虫

1>结构

2>qiushibaike.py爬虫文件

import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders.crawl import Rule, CrawlSpider

class BaiduSpider(CrawlSpider):
  name = 'qiushibaike'
  allowed_domains = ['qiushibaike.com']
  start_urls = ['https://www.qiushibaike.com/text/']#启始页面
#
  rules= (
    Rule(LinkExtractor(restrict_xpaths=r'//a[@class="contentHerf"]'),callback='parse_item',follow=True),
    Rule(LinkExtractor(restrict_xpaths=r'//ul[@class="pagination"]/li/a'),follow=True)
  )

  def parse_item(self, response):
    title=response.xpath('//h1[@class="article-title"]/text()').extract_first().strip() #标题
    time=response.xpath(' //span[@class="stats-time"]/text()').extract_first().strip() #发布时间
    content=response.xpath('//div[@class="content"]/text()').extract_first().replace('  ','\n') #内容
    score=response.xpath('//i[@class="number"]/text()').extract_first().strip() #好笑数

    yield({"title":title,"content":content,"time":time,"score":score});

3>pipelines.py 数据管道[code]class QiushibaikePipeline:

class QiushibaikePipeline:
  def open_spider(self,spider):#启动爬虫中调用
    self.f=open("xiaoshuo.txt","w",encoding='utf-8')
  def process_item(self, item, spider):
    info=item.get("title")+"\n"+ item.get("time")+" 好笑数"+item.get("score")+"\n"+ item.get("content")+'\n'
    self.f.write(info+"\n")
    self.f.flush()
  def close_spider(self,spider):#关闭爬虫中调用
    self.f.close()

4>settings.py

开启ZhonghengPipeline

ITEM_PIPELINES = {
  'qiushibaike.pipelines.QiushibaikePipeline': 300,
}

5>0main.py运行

from scrapy.cmdline import execute
execute('scrapy crawl qiushibaike'.split())

6>结果:

生成xiaohua.txt,里面有下载的笑话文字

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Scrapy框架爬取Boss直聘网Python职位信息的源码

    分析 使用CrawlSpider结合LinkExtractor和Rule爬取网页信息 LinkExtractor用于定义链接提取规则,一般使用allow参数即可 LinkExtractor(allow=(), # 使用正则定义提取规则 deny=(), # 排除规则 allow_domains=(), # 限定域名范围 deny_domains=(), # 排除域名范围 restrict_xpaths=(), # 使用xpath定义提取队则 tags=('a', 'area'), attrs=(

  • Python使用Scrapy爬取妹子图

    Python Scrapy爬虫,听说妹子图挺火,我整站爬取了,上周一共搞了大概8000多张图片.和大家分享一下. 核心爬虫代码 # -*- coding: utf-8 -*- from scrapy.selector import Selector import scrapy from scrapy.contrib.loader import ItemLoader, Identity from fun.items import MeizituItem class MeizituSpider(sc

  • Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】

    本文实例讲述了Python3爬虫爬取英雄联盟高清桌面壁纸功能.分享给大家供大家参考,具体如下: 使用Scrapy爬虫抓取英雄联盟高清桌面壁纸 源码地址:https://github.com/snowyme/loldesk 开始项目前需要安装python3和Scrapy,不会的自行百度,这里就不具体介绍了 首先,创建项目 scrapy startproject loldesk 生成项目的目录结构 首先需要定义抓取元素,在item.py中,我们这个项目用到了图片名和链接 import scrapy

  • 使用Python的Scrapy框架十分钟爬取美女图

    简介 scrapy 是一个 python 下面功能丰富.使用快捷方便的爬虫框架.用 scrapy 可以快速的开发一个简单的爬虫,官方给出的一个简单例子足以证明其强大: 快速开发 下面开始10分钟倒计时: 当然开始前,可以先看看之前我们写过的 scrapy 入门文章 <零基础写python爬虫之使用Scrapy框架编写爬虫 1. 初始化项目 scrapy startproject mzt cd mzt scrapy genspider meizitu meizitu.com 2. 添加 spide

  • Python爬虫 scrapy框架爬取某招聘网存入mongodb解析

    创建项目 scrapy startproject zhaoping 创建爬虫 cd zhaoping scrapy genspider hr zhaopingwang.com 目录结构 items.py title = scrapy.Field() position = scrapy.Field() publish_date = scrapy.Field() pipelines.py from pymongo import MongoClient mongoclient = MongoClien

  • python爬虫框架scrapy实战之爬取京东商城进阶篇

    前言 之前的一篇文章已经讲过怎样获取链接,怎样获得参数了,详情请看python爬取京东商城普通篇,本文将详细介绍利用python爬虫框架scrapy如何爬取京东商城,下面话不多说了,来看看详细的介绍吧. 代码详解 1.首先应该构造请求,这里使用scrapy.Request,这个方法默认调用的是start_urls构造请求,如果要改变默认的请求,那么必须重载该方法,这个方法的返回值必须是一个可迭代的对象,一般是用yield返回. 代码如下: def start_requests(self): fo

  • Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码

    大家可以在Github上clone全部源码. Github:https://github.com/williamzxl/Scrapy_CrawlMeiziTu Scrapy官方文档:http://scrapy-chs.readthedocs.io/zh_CN/latest/index.html 基本上按照文档的流程走一遍就基本会用了. Step1: 在开始爬取之前,必须创建一个新的Scrapy项目. 进入打算存储代码的目录中,运行下列命令: scrapy startproject CrawlMe

  • Python下使用Scrapy爬取网页内容的实例

    上周用了一周的时间学习了Python和Scrapy,实现了从0到1完整的网页爬虫实现.研究的时候很痛苦,但是很享受,做技术的嘛. 首先,安装Python,坑太多了,一个个爬.由于我是windows环境,没钱买mac, 在安装的时候遇到各种各样的问题,确实各种各样的依赖. 安装教程不再赘述.如果在安装的过程中遇到 ERROR:需要windows c/c++问题,一般是由于缺少windows开发编译环境,晚上大多数教程是安装一个VisualStudio,太不靠谱了,事实上只要安装一个WindowsS

  • Python scrapy爬取小说代码案例详解

    scrapy是目前python使用的最广泛的爬虫框架 架构图如下 解释: Scrapy Engine(引擎): 负责Spider.ItemPipeline.Downloader.Scheduler中间的通讯,信号.数据传递等. Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎. Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Respon

  • python爬虫爬取微博评论案例详解

    前几天,杨超越编程大赛火了,大家都在报名参加,而我也是其中的一员. 在我们的项目中,我负责的是数据爬取这块,我主要是把对于杨超越 的每一条评论的相关信息. 数据格式:{"name":评论人姓名,"comment_time":评论时间,"comment_info":评论内容,"comment_url":评论人的主页} 以上就是我们需要的信息. 爬虫前的分析: 以上是杨超越的微博主页,这是我们首先需要获取到的内容. 因为我们需要等

  • Python爬虫爬取新闻资讯案例详解

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 一个简单的Python资讯采集案例,列表页到详情页,到数据保存,保存为txt文档,网站网页结构算是比较规整,简单清晰明了,资讯新闻内容的采集和保存! 应用到的库 requests,time,re,UserAgent,etree import requests,time,re from fake_useragent import UserAgent from lxml im

  • Python scrapy爬取起点中文网小说榜单

    一.项目需求 爬取排行榜小说的作者,书名,分类以及完结或连载 二.项目分析 目标url:"https://www.qidian.com/rank/hotsales?style=1&page=1" 通过控制台搜索发现相应信息均存在于html静态网页中,所以此次爬虫难度较低. 通过控制台观察发现,需要的内容都在一个个li列表中,每一个列表代表一本书的内容. 在li中找到所需的内容 找到第两页的url "https://www.qidian.com/rank/hotsale

  • 使用python scrapy爬取天气并导出csv文件

    目录 爬取xxx天气 安装 创建scray爬虫项目 文件说明 开始爬虫 补充:scrapy导出csv时字段的一些问题 1.字段顺序问题: 2.输出csv有空行的问题 总结 爬取xxx天气 爬取网址:https://tianqi.2345.com/today-60038.htm 安装 pip install scrapy 我使用的版本是scrapy 2.5 创建scray爬虫项目 在命令行如下输入命令 scrapy startproject name name为项目名称如,scrapy start

  • Python爬虫之爬取淘女郎照片示例详解

    本篇目标 抓取淘宝MM的姓名,头像,年龄 抓取每一个MM的资料简介以及写真图片 把每一个MM的写真图片按照文件夹保存到本地 熟悉文件保存的过程 1.URL的格式 在这里我们用到的URL是 http://mm.taobao.com/json/request_top_list.htm?page=1,问号前面是基地址,后面的参数page是代表第几页,可以随意更换地址.点击开之后,会发现有一些淘宝MM的简介,并附有超链接链接到个人详情页面. 我们需要抓取本页面的头像地址,MM姓名,MM年龄,MM居住地,

  • Python scrapy爬取苏州二手房交易数据

    一.项目需求 使用Scrapy爬取链家网中苏州市二手房交易数据并保存于CSV文件中 要求: 房屋面积.总价和单价只需要具体的数字,不需要单位名称. 删除字段不全的房屋数据,如有的房屋朝向会显示"暂无数据",应该剔除. 保存到CSV文件中的数据,字段要按照如下顺序排列:房屋名称,房屋户型,建筑面积,房屋朝向,装修情况,有无电梯,房屋总价,房屋单价,房屋产权. 二.项目分析 流程图 通过控制台发现所有房屋信息都在一个ul中其中每一个li里存储一个房屋的信息. 找了到需要的字段,这里以房屋名

  • Python元类与迭代器生成器案例详解

    1.__getattr__和__getattribute__魔法函数 __getattr__是当类调用一个不存在的属性时才会调用getattr魔法函数,他传入的值item就是你这个调用的不存在的值. __getattribute__则是无条件的优先执行,所以如果不是特殊情况最好不要用__getattribute__. class User(object): def __init__(self, name, info): self.name = name self.info = info def

  • Python Pycurl的属性与方法案例详解

    Pycurl包是一个libcurl的Python接口,由C语言编写的,功能强大,速度快.由于pycurl的属性和方法太多了,写这篇博文记录一下pycurl的属性和方法. 正常安装 pip install pycurl 如果出现问题,可以按照系统版本搜索安装方法,比如centos7.1 安装pycurl 通用请求方法 import pycurl,urllib from io import BytesIO url = 'http://www.baidu.com' headers = [ "User-

  • 对python dataframe逻辑取值的方法详解

    我遇到的一个小需求,就是希望通过判断pandas dataframe中一列的值在两个条件范围(比如下面代码中所描述的逻辑,取小于u-3ε和大于u+3ε的值),然后取出dataframe中的所有符合条件的值,这个需求的解决与普通的iloc.loc.ix的方式不同,所以我想分享一下,希望可以帮到遇到这个困难的朋友们,下面是我的实例代码: doc[~((doc.iloc[:,141:142]<(mean_value-3*std_value))&(doc.iloc[:,141:142]>(me

随机推荐