我需要从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
个对象吗?
答案 0 :(得分:2)
您必须获取帧源URL(在帧src属性中给出)并使用该url作为Request url来获取帧中的数据。
答案 1 :(得分:0)
如果您只想抓取帧src网址,请使用此规则:
Rule(SgmlLinkExtractor(allow = (all_subdomains,), tags=('a', 'area', 'frame'), attrs=('href','src')))