关于Scrapy,我在使用链接提取规则导航页面时遇到问题,我认为这与允许参数有关

Regarding Scrapy, I am having trouble navigating pages using the linkextraction rules, and I think it has something to do with the allow parameter

抱歉,我是 Scrapy 的新手,无法找到递归抓取和规则定义的资源。我只是想抓取 start-url 中的所有职位列表以及下一页 link 中的所有职位列表,直到没有更多为止。我能够按照教程成功地抓取一页。然而,实现 CrawlSpider 比页面更远是很棘手的。

代码:

from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.lxmlhtml import LxmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from tutorial.items import TutorialItem

class MySpider(CrawlSpider):
    name = "craigs"
    allowed_domains = ["craigslist.org"]
    start_urls = ["http://losangeles.craigslist.org/search/jjj?query=West+LA"]

    rules = (Rule (LxmlLinkExtractor(allow=('s=d00',),restrict_xpaths=('//p[@class="button next"]',))
    , callback="parse_items", follow= True),
    )

    def parse_items(self, response):
        hxs = HtmlXPathSelector(response)
        titles = hxs.select("//span[@class='pl']")
        items = []
        for titles in titles:
            item = TutorialItem()
            item ["title"] = titles.select("a/text()").extract()
            item ["link"] = titles.select("a/@href").extract()
            items.append(item)
        return items

我认为遇到问题的 html 部分是:

<a class="button next" title="next page" href="/search/jjj?s=100&query=west%20LA&sort=date">

当您转到每个页面时,唯一改变的部分是 s=d00 部分。在允许参数中定义我的问题吗?

此外,如果有人可以推荐更多递归抓取的入门教程,那将是有益的。我累了:http://mherman.org/blog/2012/11/08/recursively-scraping-web-pages-with-scrapy/#.VRBK_ZN4r-a

谢谢大家!

匹配一个或多个数字作为s的值:

allow=r"s=\d+"

此外,您的 restict_xpaths 设置指向具有 class="button next"p 元素,而只有 a 元素具有此 class 值。换句话说,替换:

restrict_xpaths=('//p[@class="button next"]',)

与:

restrict_xpaths='//a[@class="button next"]'

请注意,它也可以设置为字符串(不需要元组)。