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