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