必威体育Betway必威体育官网
当前位置:首页 > IT技术

伯乐在线

时间:2019-09-26 06:11:10来源:IT技术作者:seo实验室小编阅读:74次「手机版」
 

伯乐在线

# -*- coding: utf-8 -*-

import scrapy

import re

from ..items import ArticleItem

class BoleSpider(scrapy.Spider):

name = 'bole'

allowed_domains = ['jobbole.com']

start_urls = ['http://blog.jobbole.com/all-posts/']

base_url = 'http://blog.jobbole.com/all-posts/'

def parse(self, response):

# 找到文章详情地址,图片链接

ps  = response.xpath('//p[@class="post floated-thumb"]//p[@class="post-thumb"]')

# for循环遍历

for p in ps:

    href = p.xpath('a/@href').extract_first('')

    img_src = p.xpath('a/img/@src').extract_first('')

    print(href,img_src)

    # 创建请求对象,yield请求

    yield scrapy.request(

        url=href,

        meta={'img_src':img_src},

        callback=self.parse_detail

    )

# 1.直接找下一页标签

# 2.没有下一页标签,再去找总页数,没有总页数,找总个数,计算总页数,注意向上取整

# 找到所有的a标签

# 返回的是一个列表

all_a = response.xpath('//a[@class="page-numbers"]')

# 取出最后一个

total_a = all_a[-1]

# 拿到的是一个字符串

pages = total_a.xpath('text()').extract_first('')

# for循环遍历

# scrapy自带的有去重策略,当一个url请求被发送过之后,如果再次对这个地址发送请求,scrapy默认会去除这个重复request,这次请求不会被发送

for x in range(2,10):

    # 根据x的值拼接完整的url地址,发请请求

    url = self.base_url+'page'+'/'+str(x)+'/'

    # yield一个请求

    yield scrapy.Request(

        url=url,

        callback=self.parse

    )

def parse_detail(self, response):

# 文章标题

title = response.xpath('//h1/text()').extract_first('')

# 找到日期和标签文本内容

res = response.xpath('//p[@class="entry-meta"]/p//text()').extract()

# 拼接完整的字符串

string = ''.join(res)

# 去除\n\r 空格

pattern =re.compile('\r|\n| ',re.S)

string = re.sub(pattern,'',string)

rs_list = string.split('·')

# 取出日期

date = rs_list.pop(0)

# 标签

tags = ','.join(rs_list)

# 文章内容

content = response.xpath('//p[@class="entry"]/p//text()').extract()

content = '\n'.join(content)

# 点赞

digg_num = response.xpath('//h10/text()').extract_first('0')

# 收藏

bookmark = response.xpath('//p[@class="post-adds"]/span[2]/text()').extract_first('')

# 判断是否有收藏数

pattern = re.compile('\d+')

res = re.search(pattern,bookmark)

# 是否有结果

if res:

    bookmark = res.group()

else:

    bookmark = '0'

# 评论数

comment = response.xpath('//p[@class="post-adds"]/a/span/text()').extract_first('')

pattern = re.compile('\d+')

res = re.search(pattern,comment)

if res:

    comment = res.group()

else:

    comment  = '0'

# 封面图

img_src = response.meta.get('img_src')

item = ArticleItem()

item['title'] = title

item['date'] = date

item['tags'] = tags

item['content'] = content

item['digg_num'] = digg_num

item['bookmark'] = bookmark

item['comment'] = comment

item['img_src'] = [img_src]

# 把图片下载之后存储的路径保存起来

# images/1-self-management-1024x640.jpg

# item['img_path'] 这里还没下载图片,无法保存图片存储路径

# 把item交给pipeline处理

yield item

相关阅读

Axure教程:在线BMI计算器制作

效果预览预览链接:https://icv2qn.axshare.com一、交互逻辑分析(1)两种度量制间的切换:公制(千克、厘米);英制(磅、英寸)【注意后面的单位

LOGO设计在线生成器:可以自己完成的logo设计神器

如果你是一间公司的领导,那么你一定很清楚开源节流的重要性。执行企业核心能力固然是你业务成功的关键因素,但另一个关键是有效地营

从美女总裁到“骗子” 是95后创业原罪还是在线教育的

2015年成立、有着“2017年度品牌影响力教育机构”称谓的学霸1对1,已经于2018年10月8日正式停止服务。一夜之间,从前人们

企业网站在线客服软件怎么选?

在如今移动互联网盛行的时代,PC端网站还有做的意义吗?首先企业网站是一个企业的网上品牌形象,做生意就要选好的“门面”,网

黑客教你3分钟盗微信号(微信密码在线破解器)

黑客教你3分钟盗微信号(微信密码在线破解器)【黑/客/徽/信/10484866】专业盗取微信密码,开房查询,通话记录查询,查询微信记录。其

分享到:

栏目导航

推荐阅读

热门阅读