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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

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