我必须每天从多个新闻网站中提取一些信息。具体来说,我必须提取一篇新闻文章:
我尝试过使用Imacros。通过修改我的代码以适应特定网站的结构,我成功地从网站中提取数据。我想知道单个代码是否可以满足不同的站点结构。
例如,在this article中,可以通过
访问标题TAG POS=1 TYPE=H1 ATTR=CLASS:article-headline EXTRACT TXT
但是,对于this article,我必须将此代码修改为:
TAG POS=1 TYPE H1 ATTR=CLASS:news-title EXTRACT TXT
是否有代码可以从这两个网站或任何新闻网站中提取标题?
答案 0 :(得分:0)
尝试以下代码,允许您从两个(或更多)网站中提取标题:
SET arr "[uk.reuters.com , CLASS:article-headline]"
ADD arr "[www.ansa.it , CLASS:news-title]"
' here you can add other sites like so:
' ADD arr "[someSite , attributesForTitle]"
SET sat EVAL("var arr = '{{arr}}'.split(']['); var sat = {}; for (i in arr) { var a = arr[i].replace(/[\\]\\[]/g, '').split(/\\s*,\\s*/); sat[a[0]] = a[1]; } JSON.stringify(sat);")
SET attr EVAL("var attr = ''; var sat = JSON.parse('{{sat}}'); for (i in sat) if ('{{!URLCURRENT}}'.indexOf(i) > -1) { var attr = sat[i]; break; } attr.trim();")
TAG POS=1 TYPE=H1 ATTR={{attr}} EXTRACT=TXT
您可能也喜欢这样一个简单但不严格的解决方案:
SET !EXTRACT_TEST_POPUP NO
SET !TIMEOUT_STEP 0
TAG POS=1 TYPE=H1 ATTR=CLASS:article-headline EXTRACT=TXT
TAG POS=1 TYPE=H1 ATTR=CLASS:news-title EXTRACT=TXT
SET !TIMEOUT_STEP 6
SET !EXTRACT EVAL("'{{!EXTRACT}}'.replace(/#EANF#/g, '').replace(/\\[EXTRACT\\]/g, '');")