当前位置 : 主页 > 编程语言 > python >

精通Scrapy网络爬虫【六】LinkExtractor提取链接

来源:互联网 收集:自由互联 发布时间:2022-06-18
用LinkExtractor提取链接 1.导入LinkExtractor 2.创建一个LinkExtractor对象,使用一个或多个构造器参数描述提取规则,这里传递给restrict_css参数一个CSS选择器表达式。它描述出下一页 链接 所在


用LinkExtractor提取链接

1.导入LinkExtractor

2.创建一个LinkExtractor对象,使用一个或多个构造器参数描述提取规则,这里传递给restrict_css参数一个CSS选择器表达式。它描述出下一页链接所在的区域(在li.next下)。

3.调用LinkExtractor对象的extract_links方法传入一个Response对象,该方法依据创建对象时所描述的提取规则,在Response对象所包含的页面中提取链接,最终返回一个列表,其中的每一个元素都是一个Link对象,即提取到的一个链接

4.用links[0]获取Link对象,用其构造Request对象并提交。

import scrapy

from ..items import BookItem
from scrapy.linkextractors import LinkExtractor

class BookSpiderSpider(scrapy.Spider):
name = 'book_spider'
# allowed_domains = ['http://books.toscrape.com/']
start_urls = ['http://books.toscrape.com//']

def parse(self, response):
for book in response.css('article.product_pod'):
books=BookItem()
books['name']=book.xpath('./h3/a/@title').extract_first()
books['price']=book.css('p.price_color::text').extract_first()
yield books
# next_url=response.css('ul.pager li.next a::attr(href)').extract_first()
# if next_url:
# next_url=response.urljoin(next_url)
# yield scrapy.Request(next_url,callback=self.parse)

le=LinkExtractor(restrict_css='ul.pager li.next')
links=le.extract_links(response)
if links:
next_url=links[0].url
yield scrapy.Request(next_url,callback=self.parse)

参数描述:

参数:

allow (a regular expression (or list of)) – 必须要匹配这个正则表达式(或正则表达式列表)的URL才会被提取。如果没有给出(或为空), 它会匹配所有的链接

deny (a regular expression (or list of)) – 与这个正则表达式(或正则表达式列表)的(绝对)不匹配的URL必须被排除在外(即不提取)。它的优先级高于 allow 的参数。如果没有给出(或None), 将不排除任何链接

allow_domains (str or list) – 单值或者包含字符串域的列表表示会被提取的链接的domains。

deny_domains (str or list) – 单值或包含域名的字符串,将不考虑提取链接的domains。

deny_extensions (list) – 应提取链接时,可以忽略扩展名的列表。如果没有给出, 它会默认为 scrapy.linkextractor 模块中定义的 IGNORED_EXTENSIONS 列表。

restrict_xpaths (str or list) – 一个的XPath (或XPath的列表),它定义了链路应该从提取的响应内的区域。如果给定的,只有那些XPath的选择的文本将被扫描的链接。见下面的例子。

tags (str or list) – 提取链接时要考虑的标记或标记列表。默认为 ( ‘a’ , ‘area’) 。

attrs (list) – 提取链接时应该寻找的attrbitues列表(仅在 tag 参数中指定的标签)。默认为 (‘href’)。

canonicalize (boolean) – 规范化每次提取的URL(使用scrapy.utils.url.canonicalize_url )。默认为 True 。

unique (boolean) – 重复过滤是否应适用于提取的链接

process_value (callable) – 见:class:BaseSgmlLinkExtractor 类的构造函数 process_value 参数。

参考资料:Scrapy官方文档

《精通Scrapy网络爬虫》刘硕 清华大学出版社



上一篇:Django 博客项目【一】
下一篇:没有了
网友评论