2021/6/10爬虫第二十二次课(crawlspider、scrapy实现登录)

本文介绍Scrapy框架下的crawlspider组件使用方法及其优势,并详细讲解Scrapy如何实现登录功能,包括利用cookie和POST请求两种方式。

一、crawlspider

引入:
回顾之前的代码中,我们有很大一部分时间在寻找下一页的url地址或者是详情页的url地址上面,这个过程能更简单一些么?

定义:
是scrpay另一种爬取数据的方式

学习目标:
了解crawlspider的使用
crawlspiser是继承与spider这个爬虫类

它的特点:
根据规则提取链接发送给引擎

如何创建crawlspider
scrapy genspider -t crawl xx xx.com
有些场景使用crawlspider还是比较方便 前提是什么 (url的规律是比较人容易用正则来实现的) [] 
正则表达式一定要写对

案例:
需求:1)进入首页 2)进入详情页获取诗歌名称
代码:(D:\python_spider\day22\ancient_poems\ancient_poems\spiders\poems.py)

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


class PoemsSpider(CrawlSpider):
    name = 'poems'
    allowed_domains = ['gushiwen.cn','gushiwen.org']
    start_urls = ['https://www.gushiwen.cn/default_1.aspx']

    rules = (
        Rule(LinkExtractor(allow=r'https://www.gushiwen.cn/default_[1,2].aspx'), follow=True),
        Rule(LinkExtractor(allow=r'https://so.gushiwen.cn/shiwenv_\w+.aspx'), callback='parse_item', follow=True)
    )

    def parse_item(self, response):
        item = {
   
   }
        #item['domain_id'] = response.xpath('//input[@id="sid"]/@value').get()
        #item['name'] = response.xpath('//div[@id="name"]').get()
        #item['description'] = response.xpath('//div[@id="description"]').get()
        gsw_divs = response.xpath('//div[@class="left"]/div[@class="sons"]')

        for gsw_div in gsw_divs:
            title = gsw_div.xpath('.//h1/text()').get()
            print(title)


        return item

scrapy–Rule()与LinkExtractor()函数理解
Python爬虫之crawlspider类的使用
LinkExtractor的基本使用方法

二、scrapy实现登录

1 携带cookie向目标url发起请求

2 携带data(账号和密码)向目标url发送post请求

3 通过selenium来模拟登录 (input标签 切换登录方式 找到用户名和密码的输入框 定位按钮)

2.1cookie方式

2.1.1在爬虫程序中

第一种方式
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

笔记本IT

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

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

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

打赏作者

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

抵扣说明:

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

余额充值