爬虫学习之基于scrapy的网络爬虫

爬虫学习之基于scrapy的网络爬虫

ID:12738747

大小:615.21 KB

页数:7页

时间:2018-07-18

爬虫学习之基于scrapy的网络爬虫_第1页
爬虫学习之基于scrapy的网络爬虫_第2页
爬虫学习之基于scrapy的网络爬虫_第3页
爬虫学习之基于scrapy的网络爬虫_第4页
爬虫学习之基于scrapy的网络爬虫_第5页
资源描述:

《爬虫学习之基于scrapy的网络爬虫》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、爬虫学习之基于Scrapy的网络爬虫  建立目标  同样在做任何事情之前都需要明确目标,那这次我们的目标是爬取一些技术性的文章并存储到数据库中。这就需要有目标网址和数据库结构,数据库我们选择使用MySql,目标网站我们找了一个叫脚本之家的内容站。我们这里首先准备好一张用于存储文章的表结构:  CREATETABLE`articles`(  `id`mediumint(8)AUTO_INCREMENTNOTNULL,  `title`varchar(255)DEFAULTNULL,  `content`longtext,  `add_date`int(11)DEFAULT

2、0,  `hits`int(11)DEFAULT'0',  `origin`varchar(500)DEFAULT'',  `tags`varchar(45)DEFAULT'',  PRIMARYKEY(`id`),  KEY`add_date`(`add_date`)  )ENGINE=InnoDBDEFAULTCHARSET=utf8COLLATE=utf8_unicode_ci;  分析目标结构  这里我们首先需要爬取得入口是“网络编程”这个节点,主入口网址为(http://www.jb51.net/list/index_1.htm)打开这个网站我们通过Chrom

3、e或者其他浏览器的查看元素来分析当前页面的HTML语义结构,如下图所示:  从图中红色框线的部分可以看出,这里是我们需要在“网络编程”这个节点下需要提取的所有文章的主分类入口,通过这些入口可以进去到不同文章分类的列表中。所以根据初步结构分析,我们得出本次爬虫的爬取路线为:  从主入口进去->提取当前入口中的所有分类->通过分类入口进入到分类列表->通过列表进入到文章页  分类入口确定了接下来看看我们的分类列表,随意点开一个分类入口,打开列表如下图所示:  这里我框出了两个主要部分,第一个是文章的标题,第二个是分页,文章对应的URL就是我们接下来需要爬取文章内容的入口,这

4、里需要注意的是分页的处理,通过分页的最后一页我们可以知道当前这类列表共有多少页文章。结合以上分析我们基本确定了本次爬虫的各个路线入口,接下来我们就开始通过程序来实现本次的目标。  实现爬虫  在实现爬虫之前我们通过一张图来对Scrapy有个基本的认识,为了保持本章内容的简洁性,我们这里暂时不会讨论ItemPipeline部分,Scrapy架构图如下所示(图片来自网络):  从图中可以很清晰的看到Scrapy所包含的几大块,下面我们通过代码来演示我们所用到的基础功能部分。  主要依赖第三方库:  web.pyweb框架,这里只用到了database部分,将来会用来进行内容

5、展示  scrapy爬虫框架,这里只用到了最基本的内容提取  这里还会用到一些xpath相关知识,请自行Google了解xpath语法  #-*-coding:utf-8-*-  '''bysudorm-rfhttp://imchenkun.com'''  importscrapy  fromscrapy.httpimportRequest  importweb  importtime  db=web.database(dbn='mysql',host='127.0.0.1',db='imchenkun',user='root',pw='root')  #允许的站点域 

6、 allow_domain="jb51.net"  base_url="http://www.jb51.net"  #列表页  list_url="http://www.jb51.net/list/list_%d_%d.htm"  #列表分页  list_page=1  #文章页  crawl_url="http://www.jb51.net/article/%d.htm"  classJB51Spider(scrapy.Spider):  name="jb51"  start_urls=[  "http://www.jb51.net/list/index_1.htm"

7、  ]  cate_list=[]  defparse(self,response):  cate_id=response.selector.xpath('//div[@class="index_borclearfix"]/div[@class="index_con"]/span/a/@href').re('(\\d+)')[::2]  foridincate_id:  cate_url=list_url%(int(id),1)  yieldRequest(cate_url,callback=self.parse_page)  def

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。