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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • hashmap面试题简书_elasticsearch面试常问问题

    hashmap面试题简书_elasticsearch面试常问问题BAT面试必问HashMap源码分析

    2022年4月22日
  • 函数指针和函数指针数组及其应用

    函数指针和函数指针数组及其应用1.函数指针先来看一个简单的例子。inta=3;void*p=&a;这是一个基础的不能再基础的例子。相信学过指针的都能看得懂。P是一个指针,指向a。a是一个整形变量。函数指针和其类似,只不过其指向的不是一个变量,而是一个函数,仅此而已。话不多说,看个例子。void(*funcPointer)(doublex);voidf1(doublex){}voidf

    2022年7月15日
  • 高德定位SDK_高德地图api使用教程

    高德定位SDK_高德地图api使用教程1.LocationManagerProxy获取当前Context创建一个LocationManagerProxy变量mAMapLocManager=LocationManagerProx

    2022年8月1日
  • SRS软件需求规格说明书_SOR是什么文件

    SRS软件需求规格说明书_SOR是什么文件【摘要】随着信息时代科技的飞速发展,经济全球化已广为人知,英语作为全球最主要的语言之一,受到越来越多的人的喜爱,不仅为了增长知识,也为了能适应社会发展的需求。但是,学英语最重要的事首先是积累词汇,没有

    2022年8月2日
  • idea激活码永久有效[最新免费获取]

    (idea激活码永久有效)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月26日
  • oracle的rownumber机制[通俗易懂]

    oracle的rownumber机制[通俗易懂]rownumber伪列(动态计算):rownumber必须从1开始计算,必须外面嵌套一层才可以,rownum是查询时候动态生成的从1开时候,所以whererownumber=2返回空,rownumber=1可以查到,rownumber>=1可以查到,rownumber

    2022年6月12日

发表回复

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

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