如何用Scrapy刮掉一些奇怪的URL

时间:2013-08-29 02:19:21

标签: python scrapy scrape

所以基本上我想用Scrapy.org来刮一个论坛。我遇到的问题是每个线程的链接都在这一行http://mywebsite.com/forum/My-Thread-Name-t213.html 现在,如果我尝试只输入http://mywebsite.com/forum/t213.html它不起作用,它不会显示带有该ID的主题,所以我真的不知道如何生成线程名称和每个主题的ID为了能够刮掉它。 我真的很感激这一点的帮助,提前谢谢!

1 个答案:

答案 0 :(得分:0)

如果没有要测试的实际URL,我不能完全确定这是否会起作用。基本上,您需要在CrawlSpider规则中使用正则表达式,该规则以您的基本网址开头,并匹配任何字符串,后跟-t,加上任何数字,最后是.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