scrapy的爬虫案例

scrapy的爬虫案例importscrapyfrom..itemsimportXiaoyouhuiItemclassXiaoyoujiSpider(scrapy.Spider):name=’XiaoYouHui’allowed_domains=[‘www.chinaxy.com’]start_urls=[‘http://www.chinaxy.com/2022index/2022/2022zymlall.html’]yjmu=[‘法学’,’工学’,’管理学’.

大家好,又见面了,我是你们的朋友全栈君。

import scrapy
from ..items import XiaoyouhuiItem

class XiaoyoujiSpider(scrapy.Spider):
    name = 'XiaoYouHui'
    allowed_domains = ['moc.yxanihc.www']
    start_urls = ['lmth.llalmyz2202/2202/xedni2202/moc.yxanihc.www//:ptth']
    yjmu=['法学','工学','管理学','教育学','经济学','理学','历史学','农学','文学','医学','艺术学','哲学']

    #获取专业分类链接
    def parse(self, response):
        yjsj =[]
        trs = response.xpath('//tr')
        i = 0
        for tr in trs:
            font=tr.xpath('./td/font/text()').get()
            if font:
                if font.strip().replace(' ','') in self.yjmu:
                    yjsj.append([font.strip().replace(' ',''),i])
            i+=1
        for n in range(len(yjsj)):
            yijidalei=yjsj[n][0]
            if n+1==len(yjsj):
                for tr in trs[yjsj[n][1]:]:
                    yield scrapy.Request(response.urljoin(tr.xpath('./td/a/@href').get()),callback=self.parse_xx,meta={'zydl':tr.xpath('./td/a/font/text()').get(),'zyml':yijidalei})
            else:
                for tr in trs[yjsj[n][1]:yjsj[n+1][1]]:
                    yield scrapy.Request(response.urljoin(tr.xpath('./td/a/@href').get()), callback=self.parse_xx,meta={'zydl': tr.xpath('./td/a/font/text()').get(), 'zyml': yijidalei})

    #获取专业信息
    def parse_xx(self,response):
        if '/news/' in response.url:
            tr_list=response.xpath('//div[@class="text"]//tr')[1:]
            zymc = ""  # 专业名称
            zylx = ""  # 专业类别
            qgpm = ""  # 全国排名
            xxmcs = ""  # 学校名称
            xjpm = ""  # 星级排名
            zydc = ""  # 专业档次
            for tr in tr_list:
                p_list=tr.xpath('./td/p//text()').getall()
                if p_list[0]!='\xa0':
                    zymc=p_list[0]#专业名称
                if p_list[1] != '\xa0':
                    zylx=p_list[1]#专业类别
                if p_list[2] != '\xa0':
                    qgpm=p_list[2]#全国排名
                if p_list[3] != '\xa0':
                    xxmcs=p_list[4]#学校名称
                if p_list[4] != '\xa0':
                    xjpm=p_list[3]#星级排名
                if p_list[5] != '\xa0':
                    zydc=p_list[5]#专业档次
                for xxmc in xxmcs.split('、'):
                    item = XiaoyouhuiItem()
                    item['yjdl']=response.meta['zyml']#专业门类
                    item['ejdl']=response.meta['zydl']#专业大类
                    item['zymc']=zymc#专业名称
                    item['zylx']=zylx#专业类别
                    item['qgpm']=qgpm#全国排名
                    item['xxmc']=xxmc#学校名称
                    item['xjpm']=xjpm#星级排名
                    item['zydc']=zydc#专业档次
                    item['url']=response.url
                    print(item)
                    yield item

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/153116.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Oracle 11g AMM与ASMM切换

    Oracle 11g AMM与ASMM切换现在的Oracle正在往智能化方向发展。如果我们现在找一些8i/9i时代的Oracle书籍,怎么样配置合适的数据库各内存池大小是非常重要的话题。但是进入10g之后,自动内存池调节成为一个重要Oracle特性。在10g时,Oracle推出了ASMM(AutomaticSharedMemoryManagement),实现了OracleSGA和PGA内部结构的自调节。进入11g之后,AMM(A…

    2022年5月3日
    47
  • Dubbo spi机制_dubbo负载均衡

    Dubbo spi机制_dubbo负载均衡前言SPI(ServiceProviderInterface):服务提供接口本文主要介绍dubbo源码中大量使用的SPI机制,dubbo中的spi和jdk中的不同SPIdubbo中提供了一个ExtensionLoader.getLoadingStrategies()方法,但是在dubbo3.0.6版本已经废弃,取而代之的是几个区分了模块的类基于名称的扩展点ClusterfailsafeCluster=ApplicationModel.defaultModel().getExtensio

    2025年6月5日
    3
  • MySQL修改表名注释「建议收藏」

    MySQL修改表名注释「建议收藏」MySQL修改表名注释altertabletest1comment’修改后的表的注释’;

    2022年6月1日
    44
  • 13 个最好用的免费服务器和网络监控工具,不看吃亏!

    13 个最好用的免费服务器和网络监控工具,不看吃亏!1、GangliaGanglia是伯克利开发的一个集群监控软件。可以监视和显示集群中的节点的各种状态信息,比如如:cpu、mem、硬盘利用率,I/O负载、网络流量情况等,同时可以将历史数据以曲线方式通过php页面呈现。Ganglia监控软件主要是用来监控系统性能的软件,如:cpu、mem、硬盘利用率,I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源…

    2022年5月27日
    44
  • 使用哈夫曼树实现文本编码、解码

    使用哈夫曼树实现文本编码、解码使用二叉树存储结构的链表,进行构造二叉树,对指定字符串编码解码

    2022年5月3日
    52
  • SDIO接口_gmac接口是什么意思

    SDIO接口_gmac接口是什么意思文章目录SDIO信号和接口SDIO命令流程SDIO寄存器卡检测卡识别卡常用命令SDIO,全称:SecureDigitalInputandOutput,即安全数字输入输出接口。SDIO卡是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的SD内存卡,并且可以连接SDIO接口的设备,目前根据SDIO协议的SPEC,SDIO接口支持的设备总类有蓝牙,网卡,电视卡等。支持三种不同…

    2022年10月4日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号