0

所以基本上我想使用 Scrapy.org 来抓取一个论坛。我遇到的问题是每个线程的链接都在这条线上http://mywebsite.com/forum/My-Thread-Name-t213.html 现在,如果我尝试只输入http://mywebsite.com /forum/t213.html它不起作用,它没有显示具有该 ID 的主题,所以我真的不知道如何生成线程名称和每个主题的 id 以便能够抓取它. 我非常感谢您对此的帮助,在此先感谢!

4

1 回答 1

0

在没有要测试的实际 URL 的情况下,我不能绝对确定这会起作用。本质上,您需要在规则中使用正则表达式,该CrawlSpider规则以您的基本 URL 开头并匹配该 URL 加上后跟的任何字符串-t,再加上任何数字,然后是 finally .html

from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.selector import HtmlXPathSelector
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor

class ThreadSpider(CrawlSpider):
    name = "mywebsite"
    allowed_domains = ["mywebsite.com"]
    start_urls = ["http://mywebsite.com/forum"]
    rules = [Rule(SgmlLinkExtractor(allow = ('/[^/]+-t\d+\.html')), follow=True,
        callback='parse_item'),]

    def parse_item(self, response):
        hxs = HtmlXPathSelector(response)
        print "We're scraping %s" % response.url
        # do something with the hxs object
于 2013-08-29T09:40:57.143 回答