array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 Python之Scrapy爬虫框架 入门实例(一) - 爱码网
zhuxr

一、开发环境

  1.安装 scrapy

  2.安装 python2.7

  3.安装编辑器 PyCharm

二、创建scrapy项目pachong

  1.在命令行输入命令:scrapy startproject  pachong 

   (pachong 为项目的名称,可以改变)

     

  2.打开编辑器PyCharm,将刚刚创建的项目pachong导入。

    (点击file—>选择open—>输入或选择E:\pachong—>点击ok)

     

三、创建scrapy爬虫文件pachong_spider.py

  在pachong_spider.py这个文件夹中编写爬取网站数据的内容。

  (右击文件spiders—>选择New,在选择PhthonFile—>输入文件名pachong_spider)

  

四、编写爬虫pachong

  将 网址  http://lab.scrapyd.cn/   博客中的所有博客标题和博客标签,以作者名-语录为名分别保存在各自作者对应的txt文件中。

  1.查看http://lab.scrapyd.cn/源代码,获取自己所需的博客标题、作者、标签三个内容的对应HTML标签信息。

  

  2.获取网址的内容,保存到变量pachong里。

  (分析HTML结构,每一段需要提取的内容都被一个 <div class="quote post">……</div> 包裹。)

  

  3.获取循环获取标题、作者的第一个内容,和对应标签的内容,并对标签的内容进行逗号分隔后,进行分类保存。

  

  4.查看下一页的HTML标签,对下一页获取的内容进行循环。

     (查看存在不存在下一页的链接,如果存在下一页,把下一页的内容提交给parse然后继续爬取。如果不存在下一页链接结束爬取。)

       

     

   5.爬虫源代码。 

 1 # -*- coding: utf-8 -*-
 2 import sys
 3 reload(sys)
 4 sys.setdefaultencoding(\'utf-8\')
 5 #Python 默认脚本文件都是 UTF-8 编码的,当脚本出现中文汉字时需要对其进行解码。
 6 import scrapy
 7 class itemSpider(scrapy.Spider):
 8     # scrapy.Spider 是一个简单的爬虫类型。
 9     # 它只是提供了一个默认start_requests()实现。
10     # 它从start_urlsspider属性发送请求,并parse 为每个结果响应调用spider的方法。
11     name ="pachong"
12     # 定义此爬虫名称的字符串。
13     # 它必须是唯一的。
14     start_urls = [\'http://lab.scrapyd.cn\']
15     #爬虫抓取自己需要的网址列表。
16     #该网站列表可以是多个。
17     def parse(self, response):
18         # 定义一个parse规则,用来爬取自己需要的网站信息。
19         pachong = response.css(\'div.quote\')
20         # 用变量pachong来保存获取网站的部分内容。
21         for v in pachong:
22             text = v.css(\'.text::text\').extract_first()
23             autor = v.css(\'.author::text\').extract_first()
24             tags = v.css(\'.tags .tag::text\').extract()
25             tags = \',\'.join(tags)
26             # 循环提取所有的标题、作者和标签内容。
27             fileName = u\'%s-语录.txt\' % autor
28             # 文件的名称为作者名字—语录.txt。
29             with open(fileName, "a+")as f:
30                 f.write(u\'标题:\'+text)
31                 f.write(\'\n\')
32                 f.write(u\'标签:\' + tags)
33                 f.write(\'\n------------------------------------------------\n\')
34                 # 打开文件并写入标题和标签内容。
35                 f.close()
36                 # 关闭文件
37             next_page = response.css(\'li.next a::attr(href)\').extract_first()
38             if next_page is not None:
39                 next_page = response.urljoin(next_page)
40                 yield scrapy.Request(next_page, callback=self.parse)
41                 # 查看存在不存在下一页的链接,如果存在下一页,把下一页的内容提交给parse然后继续爬取。
42                 # 如果不存在下一页链接结束爬取。

 

五、运行爬虫pachong

  1.在命令行输入命令:scrapy crawl  pachong

  (在pachong的目录下输入命令)

  

  

  2.打开e盘 pachong文件夹,已经按要求爬取网址  http://lab.scrapyd.cn/ 的内容。

  

 

分类:

技术点:

相关文章:

  • 2020-01-12
  • 2020-01-13
  • 2020-01-15
  • 2020-01-16
  • 2021-11-30
  • 2021-12-10
  • 2019-02-14
猜你喜欢
  • 2020-01-07
  • 2019-03-09
  • 2018-02-02
  • 2020-01-08
  • 2018-07-07
  • 2018-07-05
  • 2021-10-14
相关资源
相似解决方案