scrapy的爬虫案例

scrapy的爬虫案例,第1张

import scrapy
from ..items import XiaoyouhuiItem

class XiaoyoujiSpider(scrapy.Spider):
    name = 'XiaoYouHui'
    allowed_domains = ['www.chinaxy.com']
    start_urls = ['http://www.chinaxy.com/2022index/2022/2022zymlall.html']
    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[@]//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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/918789.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存