在Python爬虫学习(十三)Scrapy命令行工具中提到的命令,我想大家应该摸索得差不多了,哈哈,还是挺有趣的吧。
本文就开始聊一聊,Scrapy中的Spiders。
Spider 类定义了如何爬取某个(或某些)网站。包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item)。 换句话说,Spider 就是您定义爬取的动作及分析某个网页(或者是有些网页)的地方。
对于spider,爬取循环做着下面的事情:
首先生成抓取第一个URL的初始 request,request 下载完成后生成 response ,然后指定对 response 要使用的回调函数。
通过调用 方法(默认情况下)为 中指定的URL生成初始的 以及将 方法作为请求的回调函数。
在回调函数中,您将解析 Response(网页)并返回带有提取的数据的 dict, 对象, 对象或这些对象的可迭代容器。这些请求还将包含回调(可能是相同的),然后由 Scrapy 下载,然后由指定的回调处理它们的响应。
在回调函数中,通常使用选择器来解析页面内容(但也可以使用BeautifulSoup,lxml或您喜欢的任何解析器),并使用解析的数据生成 Item。
最后,从爬虫返回的 Item 通常将持久存储到数据或写入文件。
如果你看完上述内容是这个状态,
那么,或许我们可以用前面学到的知识解读一下:
在没有用到Scrapy这个框架的时候,我们老是自己写代码去请求网页,获得响应,然后再用正则表达式、BeautifulSoup等工具来提取我们想要的信息,最后,再把提取到的结构化的数据存到文件或则数据库中。这不就分别对应着上述内容嘛,简单吧!
Spider类中包含了一些很重要的方法和属性:
name
定义此爬虫名称的字符串。爬虫名称是爬虫如何由 Scrapy 定位(和实例化),因此它必须是唯一的。但是,可以生成多个相同的爬虫实例(instance),这没有任何限制。 name是spider最重要的属性,而且是必须的。
start_urls
URL列表。当没有指定特定 URL 时,爬虫将从从该列表中开始抓取。因此,爬取的第一个页面将是这里列出的某个 URL。后续的 URL 将根据包含在起始 URL 中的数据连续生成。
parse(response)
当response没有指定回调函数时,这是Scrapy用来处理下载的response的默认方法。 方法负责处理response并返回所抓取的数据以及跟进的URL。 对其他的Request的回调函数也有相同的要求。
当然,还有很多其他内容,这就不多说了,感兴趣的话,自己去看看文档。
我们就用这些信息写爬一下电影天堂:
地址为:http://www.ygdy8.net/html/gndy/dyzz/index.html
我们可以用昨天学到的 命令尝尝鲜,
可以看到:
原来,请求到的网页是这样的,没了那些花里胡哨的东西啦!那么,就不妨再进一步,审查元素,了解网页结构:
OK,结构已了解,现在已经是老司机的我们对这个应该是轻车熟路咯。
领取专属 10元无门槛券
私享最新 技术干货