爬虫学习之基于Scrapy的网络爬虫.docxVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
爬虫学习之基于Scrapy的网络爬虫

爬虫学习之基于Scrapy的网络爬虫   建立目标   同样在做任何事情之前都需要明确目标,那这次我们的目标是爬取一些技术性的文章并存储到数据库中。这就需要有目标网址和数据库结构,数据库我们选择使用MySql,目标网站我们找了一个叫脚本之家的内容站。我们这里首先准备好一张用于存储文章的表结构:   CREATE TABLE `articles` (   `id` mediumint(8) AUTO_INCREMENT NOT NULL,   `title` varchar(255) DEFAULT NULL,   `content` longtext,   `add_date` int(11) DEFAULT 0,   `hits` int(11) DEFAULT 0,   `origin` varchar(500) DEFAULT ,   `tags` varchar(45) DEFAULT ,   PRIMARY KEY (`id`),   KEY `add_date` (`add_date`)   ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;   分析目标结构   这里我们首先需要爬取得入口是“网络编程”这个节点,主入口网址为(/list/index_1.htm) 打开这个网站我们通过Chrome或者其他浏览器的查看元素来分析当前页面的HTML语义结构,如下图所示:   从图中红色框线的部分可以看出,这里是我们需要在“网络编程”这个节点下需要提取的所有文章的主分类入口,通过这些入口可以进去到不同文章分类的列表中。所以根据初步结构分析,我们得出本次爬虫的爬取路线为:   从主入口进去 - 提取当前入口中的所有分类 - 通过分类入口进入到分类列表 - 通过列表进入到文章页   分类入口确定了接下来看看我们的分类列表,随意点开一个分类入口,打开列表如下图所示:   这里我框出了两个主要部分,第一个是文章的标题,第二个是分页,文章对应的URL就是我们接下来需要爬取文章内容的入口,这里需要注意的是分页的处理,通过分页的最后一页我们可以知道当前这类列表共有多少页文章。结合以上分析我们基本确定了本次爬虫的各个路线入口,接下来我们就开始通过程序来实现本次的目标。   实现爬虫   在实现爬虫之前我们通过一张图来对Scrapy有个基本的认识,为了保持本章内容的简洁性,我们这里暂时不会讨论Item Pipeline部分,Scrapy架构图如下所示(图片来自网络):   从图中可以很清晰的看到Scrapy所包含的几大块,下面我们通过代码来演示我们所用到的基础功能部分。   主要依赖第三方库:   web.py web框架,这里只用到了database部分,将来会用来进行内容展示   scrapy 爬虫框架,这里只用到了最基本的内容提取   这里还会用到一些xpath相关知识,请自行Google了解xpath语法   # -*- coding:utf-8 -*-   by sudo rm -rf   import scrapy   from scrapy.http import Request   import web   import time   db = web.database(dbn=mysql, host=, db=imchenkun, user=root, pw=root)   # 允许的站点域   allow_domain =   base_url =   # 列表页   list_url = /list/list_%d_%d.htm   # 列表分页   list_page = 1   # 文章页   crawl_url = /article/%d.htm   class JB51Spider(scrapy.Spider):   name = jb51   start_urls = [   /list/index_1.htm   ]   cate_list = []   def parse(self, response):   cate_id = response.selector.xpath(//div[@class=index_bor clearfix]/div[@class=index_con]/span/a/@href).re((\\\\d+))[::2]   for id in cate_id:   cate_url = list_url % (int(id), 1)   yield Request(cate_url, callback=self.parse_page)   def parse_page(self, response)

文档评论(0)

wuyuetian + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档