爬虫主逻辑处理,获取字段,获取主url和子url

#!/usr/bin/python3
# -*- coding: utf-8 -*- import scrapy
from scrapy.http import Request
from urllib import parse
from JobBole.items import JobboleItem, ArticleItemLoader class ExampleSpider(scrapy.Spider):
name = 'jobbole'
# allowed_domains = ['example.com']
# 起始url
start_urls = ['http://blog.jobbole.com/all-posts/'] def parse(self, response):
# 获取主页面所以有效详情页面url,图片url,下一页url
home_all_node = response.css('.post.floated-thumb .post-thumb a')
# 获取节点,循环出每个单张图片和单个url交个下载器和子url处理
for home_node in home_all_node:
img_url = home_node.css('img::attr(src)').extract_first('')
cont_url = home_node.css('::attr(href)').extract_first('')
# yield 提供异步方法,parser 进行域名拼接,meta进行传值
yield Request(url=parse.urljoin(response.url, cont_url),
meta={'img_url': img_url},
callback=self.analysie_go)
# 提取下一页并下载
next_page_url = response.css('.next.page-numbers::attr(href)').extract_first('')
if next_page_url:
yield Request(url=parse.urljoin(response.url, next_page_url), callback=self.parse) def analysie_go(self, response):
# 解析详情页面获取所需其他字段的值
img_url = response.meta.get('img_url', '0')
load_item = ArticleItemLoader(item=JobboleItem(), response=response)
load_item.add_value('img_url', img_url)
load_item.add_value('cont_url', response.url)
load_item.add_value('cont_id', response.url)
load_item.add_css('title', '.entry-header h1::text')
load_item.add_css('publish_time', '.entry-meta-hide-on-mobile::text')
load_item.add_xpath('cont', '//div[@class="entry"]//text()')
load_item.add_css('link_num', '.vote-post-up h10::text')
load_item.add_css('collection_num', '.bookmark-btn::text')
load_item.add_css('comment_num', '.post-adds a span::text')
article_items = load_item.load_item()
# 把获取的字段交给items
yield article_items

  

爬取知名社区技术文章_article_3的更多相关文章

  1. 爬取知名社区技术文章_items_2

    item中定义获取的字段和原始数据进行处理并合法化数据 #!/usr/bin/python3 # -*- coding: utf-8 -*- import scrapy import hashlib ...

  2. 爬取知名社区技术文章_setting_5

    # -*- coding: utf-8 -*- # Scrapy settings for JobBole project # # For simplicity, this file contains ...

  3. 爬取知名社区技术文章_pipelines_4

    获取字段的存储处理和获取普通的路径 #!/usr/bin/python3 # -*- coding: utf-8 -*- import pymysql import gevent import pym ...

  4. 第4章 scrapy爬取知名技术文章网站(2)

    4-8~9 编写spider爬取jobbole的所有文章 # -*- coding: utf-8 -*- import re import scrapy import datetime from sc ...

  5. 爬取博主所有文章并保存到本地(.txt版)--python3.6

    闲话: 一位前辈告诉我大学期间要好好维护自己的博客,在博客园发布很好,但是自己最好也保留一个备份. 正好最近在学习python,刚刚从py2转到py3,还有点不是很习惯,正想着多练习,于是萌生了这个想 ...

  6. 爬虫实战——Scrapy爬取伯乐在线所有文章

    Scrapy简单介绍及爬取伯乐在线所有文章 一.简说安装相关环境及依赖包 1.安装Python(2或3都行,我这里用的是3) 2.虚拟环境搭建: 依赖包:virtualenv,virtualenvwr ...

  7. Node爬取简书首页文章

    Node爬取简书首页文章 博主刚学node,打算写个爬虫练练手,这次的爬虫目标是简书的首页文章 流程分析 使用superagent发送http请求到服务端,获取HTML文本 用cheerio解析获得的 ...

  8. 使用Python爬取微信公众号文章并保存为PDF文件(解决图片不显示的问题)

    前言 第一次写博客,主要内容是爬取微信公众号的文章,将文章以PDF格式保存在本地. 爬取微信公众号文章(使用wechatsogou) 1.安装 pip install wechatsogou --up ...

  9. Python3.6+Scrapy爬取知名技术文章网站

    爬取分析 伯乐在线已经提供了所有文章的接口,还有下一页的接口,所有我们可以直接爬取一页,再翻页爬. 环境搭建 Windows下安装Python: http://www.cnblogs.com/0bug ...

随机推荐

  1. 第十五章:Python の Web开发基础 (二) JavaScript与DOM

    本課主題 JavaScript 介绍 DOM 介绍 JavaScript 介绍 JavaScript 是一门编程语言,它可以让网页动起来的,JavaScript 的变量有两种,一个是局部变量:一个是全 ...

  2. 【LCT】BZOJ3091 城市旅行

    3091: 城市旅行 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1927  Solved: 631[Submit][Status][Discuss ...

  3. AJAX的写法

    AJAX可以说是前端开发必须要会的技术.AJAX是异步的javascript and xml.是他们技术的合称. 1.原生写ajax.很多小伙伴在会了jQuery后,将原生都忘记了,所以原生我还是要在 ...

  4. SharePoint2013上传列表模板(后缀stp)

    在根网站操作

  5. 调出js控制台可以在浏览器地址栏输入about:blank

    调出js控制台可以在浏览器地址栏输入about:blank,如果不输入about:blank,直接 打开一个新的页面,有可能输出的结果不准确.也就是说变量有可能被其他的影响到, 造成结果不准确.

  6. 2017年第六届数学中国数学建模国际赛(小美赛)C题解题思路

    这篇文章主要是介绍下C题的解题思路,首先我们对这道C题进行一个整体的概括,结构如下: C题:经济类 第一问:发现危险人群. 发现:欺诈的方式开始.雇佣或浪漫的承诺. 数据→确定特定的经济萧条地区→确定 ...

  7. CTF---Web入门第十题 Once More

    Once More分值:10 来源: iFurySt 难度:易 参与人数:4782人 Get Flag:2123人 答题人数:2166人 解题通过率:98% 啊拉?又是php审计.已经想吐了. hin ...

  8. Codeforces Round #301 (Div. 2)(A,【模拟】B,【贪心构造】C,【DFS】)

    A. Combination Lock time limit per test:2 seconds memory limit per test:256 megabytes input:standard ...

  9. How Many Sets I(容斥定理)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3556 How Many Sets I Time Limit: 2 ...

  10. MongoDB基本命令操作

    在上一篇随笔中记录了如何在Centos7上安装MongoDB数据库,这一篇我们就一起来学学基本的操作命令. 安装完成后,shell交互式下输入mongo就可以直接无密码登录到数据库. show dbs ...