如何抓取HTML页面以生成总体主观网站评分

1 投票
5 回答
820 浏览
提问于 2025-04-17 00:20

提前感谢你的帮助。

我一直在努力寻找或编写一个工具,能做到以下几点:

  1. 在指定的网站(sitename)上爬取所有的网页,寻找一些特定的字符串(a, b, c, d, e),同时也要查找一个特定的JavaScript文件(javascriptfile.js)。

  2. 如果在某个页面上没有找到这个JavaScript文件,就把这个页面的名字或网址记录到一个文件里,然后继续爬取其他页面。

  3. 根据每个字符串在页面上出现的次数来计算总分(比如每找到一次字符串"a"得1分,每找到一次字符串"b"得2分),依此类推。

我在第一部分遇到了困难——因为我没有足够的编程技能来写爬虫的部分。我试过Wget、pavuk、mechanize,还有一些PHP脚本,但它们似乎都有一些限制。

有没有人能给我一些例子或者建议,告诉我如何使用或修改这些工具,或者写一个脚本来完成上述任务?

我对C、Java、PHP、Perl等语言都很开放——只想把这个事情做好!

非常感谢你的帮助!!!

5 个回答

1

我推荐使用Python的urllib库

获取网页

用Python通过HTTP获取普通网页非常简单:

import urllib
f = urllib.urlopen("http://www.python.org")
s = f.read()
f.close()

--这个内容来自这里

然后可以使用Python的HTML解析器

1

好吧,第一点其实是这样的(用PHP):

只有这样你才能继续进行第二点和第三点。

1

在指定的网站(sitename)上爬取所有的html页面,寻找各种字符串(a, b, c, d, e),同时也要查找一个特定的javascript文件(javascriptfile.js)

在Python中,你可以使用urllib库。这个库可以让你很方便地和网络服务器进行交流。接下来,你需要了解一下正则表达式(regexp),它可以帮助你进行爬取和字符串搜索。因为大多数服务器没有公开的索引,你需要找到<a>标签,然后提取出它们指向的链接,接着再去爬取新的目标。

从锚标签中获取href属性

比较域名,确保它们是相同的,或者是相对路径(以'/'开头)

重复这个过程

你可以考虑使用'beautifulsoup'来帮助你完成这个任务。它可以为你处理HTML的读取工作。 Beautiful Soup

它甚至可以帮助你搜索你的字符串。

如果在某个页面上没有找到javascript文件,就把这个页面的名称/网址输出到一个文件中,然后继续爬取。

你可以再次使用Beautiful Soup或正则表达式来检查页面上是否包含这个文件,格式是<script src='urltofile'>。然后把你正在爬取的当前页面写入文件。

根据每个字符串在页面上出现的次数来计算总分(每个字符串"a"得1分,每个字符串"b"得2分)等等。

这个过程会在你爬取页面时进行,使用正则表达式可以计算特定文本模式出现的次数,然后把这些次数加到一个字典中,得到你的结果。也许可以创建一个映射,比如score = {'a': 10}; 如果找到a: points += score['a']*出现次数

好的正则表达式参考资料: Regexp Info

撰写回答