Scrapy 抓取并跟踪 href 中的链接
Scrapy crawl and follow links within href
我对 scrapy 非常陌生。我需要从url的主页关注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 页面抓取内容。
谁能建议我从哪里开始。我阅读了有关 Linkextractor 的信息,但找不到合适的参考资料作为开始。谢谢
据我所见,我可以这样说:
- 产品类别的 URL 始终以
.kat
结尾
- 产品的 URL 包含
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
换句话说,我们要求蜘蛛跟踪每个类别 link 并在它抓取包含 id_
的 link 时通知我们 - 这对我们来说意味着我们找到一个产品 - 在这种情况下,为了举例,我在控制台上打印页面标题。这应该给你一个很好的起点。
我对 scrapy 非常陌生。我需要从url的主页关注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 页面抓取内容。 谁能建议我从哪里开始。我阅读了有关 Linkextractor 的信息,但找不到合适的参考资料作为开始。谢谢
据我所见,我可以这样说:
- 产品类别的 URL 始终以
.kat
结尾
- 产品的 URL 包含
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
换句话说,我们要求蜘蛛跟踪每个类别 link 并在它抓取包含 id_
的 link 时通知我们 - 这对我们来说意味着我们找到一个产品 - 在这种情况下,为了举例,我在控制台上打印页面标题。这应该给你一个很好的起点。