01
新建项目
# 新建项目的命令# 1. 在目标目录下启动控制台# 2. 然后,在命令行里面输入如下命令:# scrapy startproject 项目名称# 那这里的项目名称就设为:news
# 最终输入:scrapy startproject news
如下:
02
创建 Spider
注意:
这里创建的 Spider 名称不能与项目名称相同,否则会报错!!!
# 在项目根目录运行命令行命令(注意是否已经cd news进入到项目根目录):# scrapy genspider 蜘蛛名称 要爬取的域名# 这里我们创建一个项目名称为:news163# 爬取的域名是:news.163.com# 注意:# 1. 这里的域名前面不要加 协议:https:// 或者添加 www# 2. Scrapy 生成 Spider 的时候会自动添加
# 最终输入:scrapy genspider news news.163.com
# 扩展scrapy genspider -t crawl news news.163.com
如下:
<< 滑动查看下一张图片 >>
实际文件夹文件图片:
more+
03
进入创建的 Spider >>> news163.py
如图:
解析每一部分的内容:
import scrapy # 导入 scrapy 库
class News163Spider(Scrapy.Spider): # 这是一个类,然后这个类继承于 Scrapy 这个父类
-
name :爬虫的名字叫 news163
-
allowed_domains = [‘news.163.com’] # 这个是设置这个爬虫允许爬取的域名,如果初始或后续的请求不是在这个域名下的,则请求链接会被过滤掉
-
start_urls = [‘http://news.163.com/‘]
-
parse :start_urls 第一个传下来的参数默认先运行 parse 函数。之后我们自己定义类似 parse 函数的话,也要做出区分,例如:parse1、parse2 之类的;
-
这里我觉得还是用之前推文的图片能让大家更好的理解:
04
扩展-Xpath
1.XPath 定义
– 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 都构建于 XPath 表达之上。
因此,对 XPath 的理解是很多高级 XML 应用的基础。
3.选取节点
05
items.py
之前我们已经编写了 items.py 请记住这部分, 这 是我们对于每个网页爬取的信息要获得的属性
06
spiders.py
导入库:
解析:
import scrapy :导入这个 Scrapy 框架
from scrapy.linkextractors import LinkExtractor :链接提取器(提取链接)
from scrapy.spiders import CrawlSpider, Rule :其中 CrawlSpider 是 Spider 的派生类,具有更多的方法和功能; Rule 表示的是爬取的规则。
from news.items import NewsItem : 导入刚刚我们编写的 Items.py
扩展:
-
LinkExtractor是从网页(scrapy.http.Response)中抽取会被follow的链接的对象。
-
LinkExtractor在CrawlSpider类(在Scrapy可用)中使用, 通过一套规则,但你也可以用它在你的Spide中,即使你不是从CrawlSpider继承的子类, 因为它的目的很简单: 提取链接。
-
rules (元组( Tuple )类的数据类型)
-
parse_start_url(response)
-
当start_url的请求返回时,该方法被调用。该方法分析最初的返回值并必须返回一个Item对象或一个Request对象或者一个可迭代的包含二者的对象
-
当编写爬虫规则时,请避免使用parse 作为回调函数。由于CrawlSpider使用parse 方法来实现其逻辑,如果 您覆盖了parse 方法,CrawlSpider将会运行失败。
-
包含一个或多个Rule对象的集合。每个Rule对爬取网站的动作定义了特定规则。Rule对象会在下面介绍。
-
CrawlSpider也提供了一个可复写的方法:
-
CrawlSpider 是 Spider 的派生类, Spider 类的设计原则是只爬取start_urls中的url,而CrawlSpider类定义了一些规则(rules)来提供跟进链接(link)的方便机制,从爬取的网页中获取link并继续爬取的工作更适合。
-
CralwSpider
-
LinkExtractor
注意:
1. 我们的类 ExampleSpider一定要继承自CrawlSpider
2. callback 不要用 parse ! 把自动生成的 parse 删掉
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试