python爬虫scrapy框架爬取糗妹妹段子首页

使用scrapy框架爬取数据 一、环境准备 首先我采用anacoda环境,需要首先建造一个项目,并激活 建立一个爬虫项目: conda create -n Spider python == 3.6.2 conda create -n Spider python == 3.6.2 然后激活环境 activate Spider 再此环境下需要下载scrapy模块和pywin32模块 pip install sc... 阅读详情

声明:本文仅为学习爬虫,请勿商业和恶意攻击网站,本文所有解释权归作者。
本文分别用两种方法把获取的段子信息存储到了本地,分别是txt文件和json文件,
txt文件比较简单,生成字典后用命令直接执行即可,json文件稍显麻烦,文章里面有详细的注释可供理解。

# -*- coding: utf-8 -*-
# texts.py
import scrapy
#导入items
from first.items import FirstItem

class TextsSpider(scrapy.Spider):
    # 爬虫的名称 scrapy list列出所有的爬虫名称
    name = 'texts'
    # 允许爬虫文件所要爬的网站是基于此网站下进行的,
    # 如:有的资源如图片是在另一个服务器就爬不到了,一般注释掉,
    # 不在此允许范围内的域名就会被过滤,而不会进行爬取
    # allowed_domains = ['http://www.qiumeimei.com/']
    # 爬虫要爬取的第一个url
    start_urls = ['http://www.qiumeimei.com/text']

    # 爬虫代码的编写位置
    def parse(self, response):
        div_list = response.xpath('//div[@class="home_main_wrap"]/div[@class="panel clearfix"]')
        contents = []
        #可以保存临时文件 csv表格 json
        for div in div_list:
            author = div.xpath('./div[@class="top clearfix"]/h2/a/text()').extract_first()
            content = div.xpath('./div[@class="main"]/p/text()').extract()
            # 需要判断拿数据  extract()经常用来切片(脱壳)从一个对象中得到list
            if content == ['\xa0']:
                content= div.xpath('./div[@class="main"]/div/p/text()').extract()
            content = "".join(content)
            # 注释的是用于本地存储的,没有分模块
            # dict1 = {
            #     "author":author,
            #     "content":content
            # }
            # contents.append(dict1)
            # 本地存储,多个模块联动操作
            # 把类实例化为一个对象
            items = FirstItem()
            items["author"] = author
            items["content"] = content
            # print(items)
            # 使用yield来传数据到items.py存储,不需要return
            yield items
        #注释的是用于本地存储的,没有分模块
        # return contents

上面的是主要程序。

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

# Define here the models for your scraped items
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.html
# items.py
import scrapy
# 存储解析到的页面数据

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

然后是管道文件,这里主要解释了如何生成json文件

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

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html
# pipelines.py
import codecs
import json
import os
# 持久化存储的相关操作  管道文件用于持久化存储 txt json csv mysql redis
class FirstPipeline(object):
    f = None
    # 开始爬虫
    def open_spider(self,spider):
        # 打开文件
        # self.f = open("qmm.txt","w",encoding="utf_8")
        # 如果不使用codecs.open打开文件,则close_spider里面的语句不生效,就是一个编码和解码的工具
        self.f = codecs.open("qmm.json","w",encoding="utf_8")
        # 列表
        self.f.write('"list":[')
    # 执行爬虫
    def process_item(self, item, spider):
        # print("正在写入中。。。")
        author = item["author"]
        content = item["content"]
        # 写入数据  这个是直接存储txt文件
        # self.f.write(author + ":" + "\n" + content + "\n\n\n")
        # 想存储json文件,就得把item对象转变为字典对象
        res = dict(item)
        # 这是因为json.dumps 序列化时对中文默认使用的ascii编码.想输出真正的中文需要指定ensure_ascii=False:
        # 直接写入字典会保存,所以把字典形式的作为list列表的值字符串格式写入
        str = json.dumps(res,ensure_ascii=False)
        self.f.write(str + "," + "\n")
        return item
    # 关闭爬虫
    def close_spider(self,spider):
        # SEEK_END 移动游标到文件最后,再向前偏移2个字符
        self.f.seek(-2,os.SEEK_END)
        # 移除偏移后的所有字符 移除了逗号,和一个换行符\n
        self.f.truncate()
        # 完成列表
        self.f.write("]")
        self.f.close()

最后一个是settings配置,主要是伪装UA和关闭robots协议,关键是下面这行代码

#管道文件
ITEM_PIPELINES = {
   'first.pipelines.FirstPipeline': 300,
}

# 注意:
# 下面这句话的含义:在执行scrapy crawl texts -o qiumeimei.json  --nolog保存
# json文件的时候,原来保存的是二进制,在添加了下面这个配置之后保存为utf-8   feed_export_encoding
FEED_EXPORT_ENCODING = 'UTF8'  #等同于scrapy crawl texts -o qiumeimei.json -s FEED_EXPORT_ENCODING = 'UTF8' --nolog

Nginx的启动、停止与重启命令(非yum方式安装)图解版 目录一、Nginx启动二、Nginx停止的三种方式2.1、第一种方式(从容停止)2.2、第二种方式(快速停止)2.3、第三种方式(强制停止)三、Nginx重启3.1、首先,验证nginx配置文件是否正确3.1.1、验证nginx配置文件(方法一)3.1.1、验证nginx配置文件(方法二)3.2、最后,重启Nginx服务3.2.1、重启Nginx服务(方法一)3.2.2、重启Nginx服务(方法二) 一、Nginx启动 启动代码格式:nginx安装目录地址 -c nginx配置文件地址 /usr/loc 阅读详情

相关推荐

若依ruoyi框架实现单点登录或者接入统一认证

log.info("单点登录用户[{}]不存在, 需要创建.", loginName);log.info("单点登录用户[{}]已存在.", loginName);jsonObjectData.put("nickName","单点1");if (code.equals("0")) {//验证成功需要自动登录。jsonObject.put("msg","验证成功");ajax.put("msg", "登录成功");

GitHub质检员 2万+

scrapy框架爬取糗妹妹网站妹子图分类的所有图片

爬取所有图片,一个页面的图片建一个文件夹。难点,图片中有不少.gif图片,需要重写下载规则, 创建scrapy项目 scrapy startproject qiumeimei 创建爬虫应用 cd qiumeimei scrapy genspider -t crawl qmm www.xxx.com items.py文件中定义下载字段 import s...

weixin_30856965的博客 1758

计算机技术发展5大阶段,现阶段计算机技术应用及发展

【摘要】现代计算机科学技术的发展和普及运用,为世界各国民众基础性生产生活实践活动的组织开展路径造成了深刻影响,本文围绕现阶段计算机技术应用及发展,择取两个具体方面,展开了简要分析。【关键词】计算机技术;应用;发展改革开放以来,计算机设备的广泛运用,促进了计算机科学技术的逐步发展成熟。计算机科学技术是具备新兴表现特征的尖端应用技术,其在现代工业生产和社会生活实践活动过程中的广泛引入运用,给世界各国基...

weixin_42126677的博客 2637

爬虫_糗事百科(scrapy)

糗事百科scrapy爬虫笔记 1.response是一个'scrapy.http.response.html.HtmlResponse'对象,可以执行xpath,css语法来提取数据 2.提取出来的数据,是一个'Selector'或者是一个'SelectorList'对象,如果想要获取其中的字符串,那么应该执行'getall'或者'get'方法 3.getall方法,获取'Select...

weixin_33843947的博客 148

告别命令行!用这个开源的Web版Kettle工具,5分钟搞定数据集成任务编排

本文介绍了一款开源的Web版Kettle工具,通过直观的拖拽界面大幅提升数据集成效率,告别复杂的命令行操作。该工具基于Kettle核心引擎,支持跨平台协作、轻量化访问和降低学习曲线,特别适合业务分析师快速上手。实测显示,使用该工具后任务配置错误率下降62%,协作效率提升40%。

weixin_30267785的博客 433

【回归预测】GRNN广义回归神经网络-MATLAB

广义回归神经网络(GRNN)是一种基于径向基函数(RBF)的神经网络模型,主要用于非线性回归任务。与传统的回归分析方法相比,GRNN具有更强的非线性映射能力和学习速度,能够快速逼近复杂的非线性关系。输入层、模式层、求和层和输出层。输入层接收输入数据,模式层通过径向基函数将输入映射到高维空间,求和层对模式层的输出进行加权求和,最后输出层生成预测结果。GRNN的核心思想是利用高斯核函数计算输入与训练样本之间的相似度,然后根据相似度加权平均得到预测值。

2303_77200324的博客 1088

糗事百科成人版段子爬虫实战

糗事百科成人版的段子爬虫 因此正则表达式可以写成 然后观察网址规律,发现格式是…page/n,n是页数 因此可以自己构造url访问多页 最后是针对某些反爬机制 可以自己添加用户代理池和ip代理池然后随机调用代理池(这个糗事百科没什么反爬机制可以不写) 常用用户代理池 https://blog.youkuaiyun.com/wangqing84411433/article/details/896003...

zzh的博客 4万+

直流有刷电机控制 - 驱动电路(二)

1.如图所示为最常见的推挽驱动电路,我附加了具有正反转功能的电机驱动控制,正反转是由两个继电器组成。使用推挽电路来驱动NMOS管时充电电流和放电电流都很大,因此NMOS管导通快,关断也快,而且NMOS温度不会很高。下面来介绍一下该电路的原理。(1)PWM_MCU是由单片机给出的PWM波信号,该信号是由一些列高低电平的方波构成。当信号为高电平的时候Q3导通,经过R47再到Q5的g极,此时mos导通,如果是K1闭合是正转那么K2闭合就是反转。(2)当PWM低电平时使得Q3关断,Q6导通。

u011030644的博客 4719

美女糗事APP应用终于重磅上线啦!!!!

海量美女极速浏览,你的需求快速定位,无节操内涵图,让你笑到尿! http://pan.baidu.com/s/1jGDphCq

Jun241090的专栏 552

【LTspice】005 伯德图绘制

目录 1 伯德图介绍 2 LTspice 截止频率验证 3 LTspice中如何添加光标 4 LTspice中如何将 幅频 和 相频曲线分开 1 伯德图介绍 Bode图由对数幅频特性和对数相频特性两张图组成。伯德图_百度百科 (1)对数幅频特性曲线 对数幅频特性是频率特性的对数值L(ω)=20lgA (ω)(dB)与频率ω的关系曲线;对数幅频特性的纵轴采用线性分度,为幅值的分贝数,即 L(ω)=20lgA(ω),A(ω)每增加10倍,L(ω)增加20dB;横坐标采用对数分度,即横轴上的ω取

m0_59642765的博客 1万+

《Python Web项目集锦》-专栏介绍和目录

本专栏专注于Python Web项目,涉及内容包含FastAPI、Django、Flask等,所有项目代码完整且可直接运行。不管是零基础还是有经验的开发,相信都能从本专栏获益。有任何问题欢迎私聊博主,专栏持续更新中...

数据知道的博客 5209

scrapy框架 crawl spider 爬取.gif图片

创建项目: scrapy startproject qiumeimei 建立爬虫应用: scrapy genspider -t crawl meimei www.qiumeimei.com 爬虫文件 meimei.py 源代码 开始 : from scrapy.linkextractors import LinkExtractor from scrapy.spiders import CrawlS...

weixin_44794964的博客 1183

C++-ONNX:用onnxruntime部署自己的模型【Pytorch导出.onnx】【Tensorflow导出.onnx】【C++用onnxruntime框架部署并推理】

微软联合Facebook等在2017年搞了个深度学习以及机器学习模型的格式标准–ONNX,旨在将所有模型格式统一为一致,更方便地实现模型部署。现在大多数的深度学习框架都支持ONNX模型转出并提供相应的导出接口。ONNXRuntime(Open Neural Network Exchange)是微软推出的一款针对ONNX模型格式的推理框架,用户可以非常便利的用其运行一个onnx模型。ONNXRuntime支持多种运行后端包括CPU,GPU,TensorRT,DML等。

u013250861的博客 5765

scrapy爬取起点小说网

闲来无事,在学习过程中练习用scrapy爬取起点小说名 工具:python3.6 操作系统:linux 浏览器:谷歌浏览器 创建项目 在黑屏终端创建一个项目:scrapy startproject Qidian 进入项目目录:cd Qidian 创建一个爬虫器:scrapy genspider qidian www.qidian.com/all (注意:这里域名不能带h...

wang1319864062的博客 2115

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

爬虫进阶:CrawlSpider爬取169ee全站美女图片

CrawlSpider前面,我们用了scrapy中的CrawlSpider爬取了糗事百科中大量段子数据。但是,qiubai这个爬虫没有充分利用CrawlSpider的优点。其实,在qiubai这个爬虫里面我们只是把CrawlSpider当做普通的Spider用而已。CrawlSpider继承自Spider,提供了Rule和LinkExtractor,使得爬虫框架能够自动按照规则提取Response中

绕行的专栏 3万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Python3 爬虫 scrapy框架 爬取小说网站数据

上次用requests写的爬虫速度很感人,今天打算用scrapy框架来实现,看看速度如何。 爬虫步骤 第一步,安装scrapy,执行一下命令 pip install Scrapy 第二步,创建项目,执行一下命令 scrapy startproject novel 第三步,编写spider文件,文件存放位置novel/spiders/tos...

weixin_34310785的博客 452

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

scrapy 爬取取糗事百科的图片

获得图片 传入下载得item name = 'demo' end = 1 url = 'https://www.qiushibaike.com/pic/' start_urls = [url+str(end)] def parse(self, response): it = ScrapydemoItem() mt = response.xpath('.//div[@class...

a1033479126的博客 313

爬虫-scrapy框架-起点中文网的爬取

起点中文全站爬取 - 知乎 https://zhuanlan.zhihu.com/p/89575876

pyhui的技术博客 874

python爬虫,爬取糗事百科并保存到文件中

#--*--coding:utf-8--*-- import re import urllib.request from urllib.error import URLError,HTTPError import sysprint(sys.getdefaultencoding())url = 'http://www.qiushibaike.com/text/page/1' # 给文件加入头信息,用以

刘宇(LY)个人笔记 4134

《封号码罗》python爬虫之企某科技网站js逆向(十四)

首先查看ajax加载,可以发现,其所有的数据都是加密方式到前端页面,由前端页面js解密之后再渲染到网页中 根据其关键字 encrypt_data进行全局搜索,寻找js的解密代码 这个地方就是解密代码,但是这里仅仅是调用,所以要进到代码里面去查看 看到这里已经发现t已经是ajax请求过来的数据了,然后是json被返回,所以重点分析这个区域的代码,可以看到,只有a.a.decode(t)调用了t,所以这个地方需要生成两个函数,一个是s,另一个是其包含的这个函数,其他都是固定的字符串,扣下来js直接调用就行

Python_DJ的博客 2万+

关于javaScript逆向hook里面的cookie以及其他常用hook汇总

个人理解:hook某个元素,实际上就是定位某个元素,例如cookie里面有个abc为名字,123为值,我们要查找设置cookie={abc:123}的位置,首先就要知道,cookie的设置是set方法,再例如发送一个ajax请求,就需要明确的知道,发送ajax需要有一个XMLHttpRequest对象,这个对象会用到open方法,在open方法中使用了url,要hook到url,实际上就是对open方法的重写,同理,hook到cookie时,也是对设置cookie的set方法进行重写...

Python_DJ的博客 8209

记忆碎片之python爬虫scrapy框架settings.py参数

# -*- coding: utf-8 -*- # Scrapy settings for morekeywords project # # For simplicity, this file contains only settings considered important or # commonly used. You can find more settings consulting ...

Python_DJ的博客 4730

python爬虫80行代码拿下喜马拉雅有声书

声明:本文仅作为学习爱好者编写,请勿商业和恶意攻击源网站,本文所有解释权归作者 本文没有使用爬虫框架,仅用了三个Python的常用库 本文适合新手参考,文章里面有大量注释为理解提供便利 # 爬网易云音乐 import requests from lxml import etree import os headers = { "User-Agent": "Mozilla/5.0 (Windo...

Python_DJ的博客 4305

关于某壳找房webpack+RSA的js逆向

第一步:切换登陆方式 第二步:查看抓包情况 第三步:模拟登陆后抓包 查看发包参数,本次主要处理password这个参数 l是对字符串处理的方法 可以看出先对原密码进行了加密,然后用l方法对密码又进行了处理 将代码添加到浏览器的Overrides,方便改写调试 第四步:改写js并进行分析 定义一个全局变量,把加载器赋值到全局变量,查看该变量 控制台打印输出,可以看出导出了59个方法 加密位置 所有代码: js太多,放图片代替 最后一步:模拟请求......

Python_DJ的博客 2620

关于python爬虫逆向RPC的基础使用

rpc使用在爬虫中的使用方式

Python_DJ的博客 1672

记忆碎片之python爬虫APP数据爬取(一)

# app数据 # 简单 # 比web端更容易,反爬虫不太强,大部分是http/https协议,大多返回json # 困难 # 01 可能需要适当的反编译,分析出加密算法并抓取到信息 # 02 可能加固,需要脱壳,然后反编译,分析出加密算法并抓取到信息 # 03 需要破解通过各式各样的签名,整数,设备绑定等方法,找到隐藏加密算法 # 技术要求 # python爬虫开发经验 app逆向 java开...

Python_DJ的博客 1670
上一篇: python爬虫80行代码拿下喜马拉雅有声书
下一篇: python爬虫scrapy框架爬智联招聘并保存mysql和本地json文件
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值