4

我需要从 HTML 文档中抓取数据,其中数据有时直接位于表格内,有时位于框架内的表格内<frameset>。在收到 HTTP 响应之前,我不知道是哪个。

目前我有

# works only when data directly in the HTML
rules = [
    Rule(SgmlLinkExtractor(allow=[r'/data/(\w+)-content.htm']), callback='parse_content')
]

# works when data inside a frame
rules = [
    ???
]

我如何告诉scrapy使用存在框架集的框架,并在不存在的地方直接使用HTML

我对scrapy如何处理从帧中提取信息感到困惑。有 XPath 技巧吗?我是否必须以Response某种方式处理对象?

4

2 回答 2

3

您必须获取框架源 url(在框架 src 属性中给出)并使用该 url 作为请求 url 来获取框架中的数据。

于 2013-06-10T13:23:47.370 回答
1

如果您也只想获取框架 src url,请使用此规则:

Rule(SgmlLinkExtractor(allow = (all_subdomains,), tags=('a', 'area', 'frame'), attrs=('href','src')))
于 2013-11-23T22:27:24.767 回答