正如名称本身所示,链接提取器是用于使用 scrapy.http.Response 对象从网页中提取链接的对象。在Scrapy中,有内置提取器,如 scrapy.linkextractors import LinkExtractor 。通过实现简单的界面,您可以根据自己的需求定制自己的链接提取器。
每个链接提取器都有一个名为 extract_links 的公共方法,其中包含一个Response对象并返回一个scrapy.link.Link对象列表。您只能实例化链接提取程序一次,并多次调用extract_links方法以提取具有不同响应的链接。CrawlSpider类使用链接提取器和一组规则,其主要目的是提取链接。
通常,链接提取器与Scrapy分组,并在scrapy.linkextractors模块中提供。默认情况下,链接提取器将是LinkExtractor,它的功能与LxmlLinkExtractor相同
from scrapy.linkextractors import LinkExtractor
class scrapy.linkextractors.lxmlhtml.LxmlLinkExtractor(allow = (), deny = (), allow_domains = (), deny_domains = (), deny_extensions = None, restrict_xpaths = (), restrict_css = (), tags = ('a', 'area'), attrs = ('href', ), canonicalize = True, unique = True, process_value = None)
该 LxmlLinkExtractor 是一个高度推荐的链接提取,因为它具有方便的过滤选项,它是用来与LXML强大的HTMLParser的。
以下代码用于提取链接 -
<a href = "javascript:goToPage('../other/page.html'); return false">Link text</a>
process_value中可以使用以下代码函数 -
def process_value(val): m = re.search("javascript:goToPage\('(.*?)'", val) if m: return m.group(1)
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!