大家好,又见面了,我是你们的朋友全栈君。
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.cn/153116.html原文链接:https://javaforall.cn