1
rekey 2014-05-18 16:11:00 +08:00
read it late ?
|
2
Livid MOD PhantomJS
|
3
lbj96347 2014-05-18 16:21:44 +08:00
如果这些div有一个通用的特征,例如位置,class,id,甚至颜色等,应该都可以通过这些特征抓取到,这里可以通过写正则写定位的方式,定位到。
而工具的话,可以采用phantomjs实现,因为有些时候做前端自动化测试等,或者一些比较高质量的定向爬虫,phantomjs很好用,因为这个东西可以模拟一个真实的浏览器环境出来。而且你还可以加入一个jQuery这样的包,方便你的dom操作。 |
5
shiny 2014-05-18 16:32:29 +08:00
写过一个 bot,只要会用 css 定位出区块就可以把内容图片链接抓出来。
抓内容需要的工作是配置下 css 即可。 |
7
ccbikai 2014-05-18 20:05:14 +08:00 via Android 1
python 的 BeautiSoup 做这个正好
|
8
ETiV 2014-05-18 20:09:49 +08:00 1
YQL, Yahoo 的通用性抓取引擎.
抓 cnbeta 首页新闻标题: select * from data.html.cssselect where url="http://www.cnbeta.com/" and css=".items_area dt a"; { "a": [ { "href": "/articles/293077.htm", "target": "_blank", "content": "可打电话 三星巨屏7英寸手机平板Galaxy W现身" }, { "href": "/articles/293075.htm", "target": "_blank", "content": "苹果收购Beats的真正目的:点缀iWatch" }, { "href": "/articles/293073.htm", "target": "_blank", "content": "Android和iOS应该如何向对方学习?" }, ... ] } |
9
ericls 2014-05-18 20:28:27 +08:00 via Android 1
这是一个很古老的问题 我看过一些文章
看到快去傅立叶变换我就关了。。。 楼主可以搜索 connect extraction |
10
thanksir 2014-05-18 23:29:40 +08:00
pyquery
|
11
shoumu 2014-05-18 23:31:07 +08:00
xpath吧
|
13
ybh37 2014-05-19 08:21:07 +08:00
看了一下,pyquery PhantomJS都不错,自己写也未尝不可。
|
15
looly 2014-05-19 10:07:05 +08:00
一般两种方式:
1、如果是非文章类可以XPath方式获取节点内的内容或者直接用正则 2、如果文字很多可以考虑基于区块的正文识别来获得正文,可以在github上看下cx-extractor这个项目。 |
16
imn1 2014-05-19 14:04:22 +08:00
不同站点的通用很难写的,我自写在用的,把过程提取出来作为模块,但也是每站点一堆参数,目前也就几十个站点,把参数写好,只要该网站不改版,下次还能用,改版了就要重写一次参数
当然不少站点的参数都类似,不同仅仅在正则,例如瀑布流ajax可以写成一个模板,不同站点的瀑布流就改改提交获取json路径就可以了,又如有些站点是第1页~第N页,也可以写个递增模板,不同的应用只需填入最后的页数和路径就行 目前遇到最难的是用js计算路径的,暂时不懂也不太想调用外部的js引擎,主要不是难,而是耗资源,算上万网页就是个问题 能用正则就尽量用正则,xpath因为要导入一个dom树,单个页面会比正则多消耗20%的时间,如果页面过万,可能就是倍数而不仅是20%~ |
17
ericls 2014-05-19 21:59:50 +08:00
突然发现我上面的写错了 是content extraction ..
|
18
missdeer 2014-05-20 11:22:13 +08:00
抓正文网上有各种语言实现的readability代码,抓其他元素的感觉XPath可以试试
|
19
RangerWolf 2014-05-20 22:04:38 +08:00
@imn1 如果是css selector的方式呢? 之前看了一本书说css选择器的效率还不错
另外 20%是你估算的还是有测试数据支撑? |
20
imn1 2014-05-23 15:46:37 +08:00
@RangerWolf 实际工作的测试,约5000个html,py3,纯parse,无下载过程(用wget另外下载的,不在程序内),除了用正则regex和lxml+xpath三行代码不同外,其他语句一样,单线程,无协程,CPU是老机器T2390,如果快点的CPU可能没那么明显
美丽汤4的css selector比lxml还要慢,这个老早有洋人测试过了,google一下,个人觉得只要载入DOM树,肯定要占资源多些的,理论上是这样,不过dom比较容易定位找到目标,正则要准确定位就要需要技巧,尤其是排除型正则比较难写 |
21
RangerWolf 2014-05-23 17:49:18 +08:00
@imn1 感谢回复~ 还没有遇过这种场景。 之前写的一个网页爬虫,性能上可能电脑要好一点笔记本 i5 双核 + 4G内存。 Java + Jsoup css selector 感觉速度还行。Python的话没写过很正式的爬虫,没有经验了。。。
|