您好,匿名用户

scrapy 如何爬取不同的网页URL结构,返回相同的item

0 投票

问题描述

例如有一个网站内的有三个板块都是公司的新闻相关
https://www.glprop.com.cn/pre...
https://www.glprop.com.cn/in-...
https://www.glprop.com.cn/in-...
这三个页面都有新闻标题,时间,URL,每个页面还有下一页的这种新闻链接。

问题出现的环境背景及自己尝试过哪些方法

我定义了一个item
class PuluosiNewsItem(scrapy.Item):

newstitle=scrapy.Field()
newtiems=scrapy.Field()
newslink=scrapy.Field()

然后spider里面想通过获取三个url构建request然后回调函数getnews来获取新闻事件,新闻标题,新闻链接,但是每个URL里面新闻又按年份进行了分类,类似于下一页下一页,实在不知道如何写spider从三个url里面返回相同的item,难道要写三个spider吗?
class PuluosiSpider(scrapy.Spider):

name = 'puluosi'
allowed_domains = ['glprop.com.cn']
start_urls = ['https://www.glprop.com.cn/press-releases.html']

#获取所有href
def parse(self, response):
    print('此时启动的爬虫为:puluosi' )
    urllist=response.xpath('//div[@class="menu"]/ul/li[4]//li')
    #把媒体中的国际市场发债信息url去除
    urllist.pop()
    base_url='https://www.glprop.com.cn'
    for web in urllist:
        url=base_url+web.xpath('.//a/@href').extract()[0]
        yield scrapy.Request(url,callback=self.getnews)
        # print("REQUEST:",scrapy.Request)

def getnews(self,response):
    pass
用户头像 提问 2019年 5月10日 @ Rammus 上士 (1,530 威望)
分享到:

1个回答

0 投票
 
最佳答案

没太理解你的意思,难道不是写三个函数就行了吗?

def parse(self, response):
    ...
    # 分类
    if xxx:
        ...
        yield scrapy.Request(url, callback=self.getnews_1)
    elif yyy:
        ...
        yield scrapy.Request(url, callback=self.getnews_2)
    elif zzz:
        ...
        yield scrapy.Request(url, callback=self.getnews_3)

def getnews_1(self, response):
    news_item = PuluosiNewsItem()
    news_item['xx'] = yy
    ...
    yield news_item
    
def getnews_2(self, response):
    news_item = PuluosiNewsItem()
    news_item['xx'] = yy
    ...
    yield news_item
    
def getnews_3(self, response):
    news_item = PuluosiNewsItem()
    news_item['xx'] = yy
    ...
    yield news_item
用户头像 回复 2019年 5月10日 @ Skarner 中士 (1,293 威望)
选中 2019年 5月9日 @Rammus
提一个问题:

相关问题

0 投票
1 回复 1,476 阅读
用户头像 提问 2012年 12月1日 @ Katarina 中士 (1,341 威望)
0 投票
1 回复 232 阅读
0 投票
1 回复 34 阅读
用户头像 提问 2019年 5月7日 @ Hera 下士 (839 威望)
0 投票
1 回复 550 阅读
0 投票
0 回复 28 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

IT技术交流群 - 随意问
欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...