我几乎没有编程经验,希望这对学习有好处。速度不是一个很大的问题,我估计爬虫最多一天需要加载4000个页面。
谢谢。
编辑:有没有办法事先测试我收集数据的网站是否受到爬虫的保护?
可能是Python或Perl。
Perl有一个非常好的LWP (Perl中的WWW库),Python有urllib2。
两者都是易于编写脚本的语言,可在大多数操作系统上使用。
我已经用Perl做过爬虫很多次了,只需要一个晚上就可以完成。
不过,除了使用某种CAPTCHA之外,它们实际上无法真正保护自己免受爬虫的攻击 - 其他所有方法都比设置更容易破解。
关于Java有一点要注意:Java很好。它更冗长,并且需要一些开发环境设置:所以您可能不会在一个晚上完成,可能需要一周时间。
对于提问者指出的小任务来说,这可能有些过度。
另一方面,有非常有用的库,如lint
、tagsoup
(用于遍历随机HTML)和lucene
(全文索引和搜索),因此您可能需要Java进行更严肃的项目。
在这种情况下,我建议使用Apache commons-httpclient
库进行网络爬虫(或者如果您很疯狂,可以使用nutch
)。
另外:还有一些货架式产品可以监视指定网站上的更改并以有用的方式呈现它们,因此您可能只需要抓取其中一个。
你最熟悉的语言很可能是使用的最好的语言。
我几乎没有编程经验。
你可能会发现网络爬虫对于你来说有点困难,需要构建一些其他更琐碎的应用程序来熟悉你选择的语言(如果适用,还需了解框架)。
祝你好运!
还有其他语言选择,编译语言不太便携,因此在服务器上设置起来通常更麻烦,但执行速度更快。脚本语言通常比编译语言更容易处理文本和文件,尽管并非总是如此。我更喜欢perl,所以我会使用它,但我这么说并不是你应该做出决定的依据,找出哪个拥有更多可用资源,哪个更符合你的口味(阅读一些代码,看看哪种风格更有意义),然后再决定。
哦,orielly有一本针对初学者的编程集体智能书籍,我从未阅读过,但据说相当不错,在商店里翻翻它,考虑一下,因为它主要涉及网络爬虫算法...它使用python作为示例。
记录:load %records.txt
;(records.txt文件的内容如下-缩进不重要)
[
[en.wikipedia.org/wiki/Budget_deficit
"美国预算赤字(维基百科)"
{<li id="lastmod">此页面上次修改于}
"2009年6月1日11:26。"]
[en.wikipedia.org/wiki/List_of_U.S._states_by_unemployment_rate
"美国失业率(维基百科)"
{<li id="lastmod">此页面上次修改于}
"2009年5月25日20:15。"]
]
;现在循环遍历记录并检查网页更改
foreach rec records [
html: read rec/1 ; 在此添加错误检查以处理404或超时
parse/all html [any [thru rec/3 copy curr-mod-date to </li>]]
unless rec/4 = curr-mod-date [
print ["检测到更改:" rec/2]
;再次解析以收集和保存特定页面数据
;使用更新的时间戳更新%records.txt文件
]
]
REBOL并不是很知名,但它很友好、非常小巧、跨平台且支持图形用户界面。我用它写快速脚本时非常成功。
lxml
is a faster solution though more complicated thanbs4
- rassa45