Scrapy爬行并跟踪href内的链接

时间:2015-02-08 04:35:04

标签: python web-scraping scrapy scrapy-spider

我对scrapy非常陌生。我需要从网址的主页跟踪href到多个深度。再次在href链接里面我有多个href。我需要关注这些href,直到我到达我想要的页面去刮。 我页面的示例html是:

初始页

<div class="page-categories">
 <a class="menu"  href="/abc.html">
 <a class="menu"  href="/def.html">
</div>

内部abc.html

<div class="cell category" >
 <div class="cell-text category">
 <p class="t">
  <a id="cat-24887" href="fgh.html"/>
</p>
</div>

我需要从 fgh.html 页面中删除内容。 有人可以建议我从哪里开始。我读到了Linkextractors,但找不到合适的参考资料。三江源

1 个答案:

答案 0 :(得分:2)

从我看来,我可以这样说:

  • 产品类别的网址始终以.kat
  • 结尾
  • 产品的网址包含id_后跟一组数字

让我们使用此信息来定义我们的蜘蛛rules

from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors import LinkExtractor


class CodeCheckspider(CrawlSpider):
    name = "code_check"

    allowed_domains = ["www.codecheck.info"]
    start_urls = ['http://www.codecheck.info/']

    rules = [
        Rule(LinkExtractor(allow=r'\.kat$'), follow=True),
        Rule(LinkExtractor(allow=r'/id_\d+/'), callback='parse_product'),
    ]

    def parse_product(self, response):
        title = response.xpath('//title/text()').extract()[0]
        print title

换句话说,我们要求蜘蛛关注每个类别链接,并在抓取包含id_的链接时让我们知道 - 这对我们来说意味着我们找到了一个产品 - 在这种情况下,对于举个例子,我在控制台上打印页面标题。这应该给你一个很好的起点。