- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)
您可能关注的文档
- 领队英语中英翻译缩印版.doc
- 颈椎病的易患人群及预防方法.doc
- 混杂试题.doc
- 基础教育地理课程标准解读试卷.doc
- 基础管理学作业管理职能的体会.doc
- 频道导航下拉菜单的制作与调用.doc
- 塑胶产品检验接收标准.docx
- 混沌现象的matlab实现.doc
- 渐冻人家庭公益培训会.docx
- 渗出液与漏出液的鉴别诊断.doc
- 2025年智能快递驿站行业政策与市场机遇报告.docx
- 2025年校园安全防范中新能源电动巡逻车采购可行性分析.docx
- 2025年智能垃圾分类智慧监管平台在智慧旅游区的应用前景研究.docx
- 2025年智能家居报告:人工智能伦理风险的法律责任与用户隐私保护.docx
- 2025年智能垃圾分类与垃圾分类信息化管理结合的可行性研究.docx
- 2025年智慧社区远程医疗诊断中心在基层医疗机构运营管理中的应用报告.docx
- 2025年智慧社区:老年活动广场智能化升级研究.docx
- 2025年智能社区新能源电动巡逻车市场应用前景分析报告.docx
- 2025年智能垃圾分类智慧监管平台在垃圾分类回收与处理中的智能化改造路径.docx
- 2025年本土半导体材料产业链国产化战略布局报告.docx
文档评论(0)