使用LinkExtractor提取链接
提取页面链接有Selector和LinkExtractor两种方法
因为链接也是页面中的数据,所以可以使用与提取数据相同的方法进行提取,在提取少量(几个)链接或提取规则比较简单时,使用selector就足够了
Scrapy提供了一个专门用于提取链接的类LinkExtractor,在提取大量链接或提取规则比较复杂时,使用LinkExtractor更加方便
描述LinkExtractor提取规则
导入LinkExtractor,位于scrapy.linkextractors模块
from scrapy.linkextractors import LinkExtractor
创建一个LinkExtractor对象,使用一个或多个构造器参数描述提取规则,下面详见
le = LinkExtractor(构造器参数)
调用LinkExtractor对象的extract_links方法传入一个Response对象,该方法依据创建对象时所描述的提取规则,
在Response对象所包含的页面中提取链接,最终返回一个列表,其中的每一个元素都是一个Link对象,即提取到的一个链接
links = le.extract_links(respons)
用links[index]获取Link对象,Link对象的url属性便是链接页面的绝对url地址(无须再调用response.urljoin方法)
url = link[index].url
LinkExtractor构造器参数描述
为了讲解举例,首先制造一个实验环境,创建两个包含多个链接的HTML页面
<!--example1.html-->
<!DOCTYPE html>
<html>
<head>
<title>LinkExtractor</title>
</head>
<body>
<div id="top">
<p>下面是一些站内链接</p>
<a class="internal" href="/intro/install.html">Installation guide</a>
<a class="internal" href="/intro/tutorial.html">Tutorial</a>
<a class="internal" href