我有个需求,需要存储新闻的标题,正文,链接URL
我目前可以全部获取到数据,但是我想在存储前对链接URL进行监测判断是否为有效链接
这个在piplines里面如何写啊,我看网上都是些scrapy本身架构在爬取url时候的去重和判断url是否有效,没有提到在item里面存储url时候进行验证的教程。
我现在想再pipelines里面去写一个request函数,然后判断item里面的url状态是否为200,但是还是不行。
class JiaminNewsPipeline(object):
def getHttpStatusCode(url):
userAgent = {
"user-agent": "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"}
timeOut = 4
try:
request = requests.get(url, headers=userAgent, timeout=timeOut)
httpStatusCode = request.status_code
return httpStatusCode
except requests.exceptions.HTTPError as e:
return e
def __init__(self):
self.wb=Workbook()
self.ws=self.wb.active
#设置表头
self.ws.append(['嘉民新闻标题','新闻发布时间','新闻URL'])
def process_item(self,item,spider):
if spider.name=="jiamin":
if self.getHttpStatusCode(item['newslink']) == 200:
line = [item['newstitle'], item['newtiems'], item['newslink']] # 把数据中每一项整理出来
self.ws.append(line)
self.wb.save('JiaminNews.xlsx') # 保存xlsx文件
return item
else:
raise DropItem("无效的URL链接 %s" % item)
piplines不是也可以拿到spider么