scrapy实战糗事百科,看看段友们的傻叼经过

絮叨一下

这篇博客主要就是爬取糗事百科的所有段子一共10页
然后保存成txt格式文件

新建项目

  • 项目名称:qsbk
scrapy startproject qsbk

新建爬虫

  • 爬虫名称:qsbk_spider
scrapy genspider qsbk_spider 'qiushibaike.com'

pycharm打开

  • qsbk_spider.py
# -*- coding: utf-8 -*-
import scrapy
from qsbk.items import QsbkItem

class QsbdSpiderSpider(scrapy.Spider):
    name = 'qsbk_spider'
    allowed_domains = ['www.qiushibaike.com']
    start_urls = ['https://www.qiushibaike.com/text/page/1']
 # 开始的页
    def parse(self, response):
        duanzidiv = response.xpath("//div[@class = 'col1 old-style-col1']/div")
        # xpath不详细说明
        for i in duanzidiv:
            author = i.xpath('.//h2/text()').get().strip()
            # 看6 get获取第一个信息就是作者名称
            content = i.xpath('.//div[@class = "content"]//text()').getall()
            # 看6 getall获取全部信息就是段子的名称
            content = ''.join(content).strip()
            # 去掉多余的空格
            item = QsbkItem(author=author, content=content)
            # QsbkItem对象 调用items 
            
            # duanzi = {'author': author, 'content': content}
            # 字典形式传递
            yield item
            # 返回类似如return  这里也可以用列表return

items.py

import scrapy

class QsbkItem(scrapy.Item):
    author = scrapy.Field()
    content = scrapy.Field()

piplines.py

import json
class QsbkPipeline(object):
    def process_item(self, item, spider):
        # item_json = json.dumps(item, ensure_ascii=False)
        item_txt = json.dumps(dict(item),ensure_ascii=False)
        self.fp.write(item_txt + '\n')
        return item

    def open_spider(self, spider):
        self.fp = open('duanzi.txt', 'w', encoding='utf-8')

    def close_spider(self, spider):
        self.fp.close()
  • 优化一下,实现翻页爬取功能

    分析一下糗事百科下一页的存放地址在li标签的最后一个没有标签就是结束可以定义判断条件结束

        next_url = response.xpath('//ul[@class="pagination"]/li[last()]/a').attrib["href"]
        print('*' * 100)
        print(next_url)
        print('*' * 100)
        if not next_url:
            return
        else:
            yield scrapy.Request(self.base_url + next_url)

写给看到最后的你

感谢你能看到最后,我想这便是给创作者的莫大鼓励

公众号:Linux下撸python
期待和你再次相遇
愿你学的愉快

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Artisan_C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值