作者content71 (罗莉饲养中...)
看板Web_Design
标题Re: [问题] 如何从其他网页抓资料
时间Tue Oct 27 16:38:22 2015
上个礼拜也遇到去别的网站爬资料的工作,
我来回报一下,顺便也提个问题
我的目标:
1. 我的网站用 PHP/WordPress
2. 去某特定网站 A 的文章总表,找出某分类的所有文章
3. 把这些文章的标题、摘要、主图片抓下来
我的设计:
1. 当有使用者进来,自动去 A 网站确认有无更新
2. 当有更新时,撷取新文章的资料
3. 存回自己网站的posts
4. 显示
解法:
A. 纯前端 - jQuery
Same Origin Policy 并不是不可越过,用 $.ajax 、JSONP 的方式可以把
回传资料变成 JS 的格式。
但有时会遇到 "Uncaught SyntaxError: Unexpected token"
这是由於预期是 JS,结果来的是 HTML
解法在这
http://goo.gl/bb2nha
我是用 CORS anywhere,改掉他的 heading,这方法可行且简单
不过其实也就是偷资料
B. 纯後端 - PHP
坦白说这是我第一个 PHP project,非常弱 ^^"
我只知道後端透过 proxy 的方式
可以合法取得对方的资料
我有写一段程式去爬对方网站,思路大概跟 jQuery 差不多
如果是我之前的 Django projects,我会用 beautiful soup 这个插件去爬
一开始是用前端的方式去做,不过後来我家工程师老大觉得不是好主意
因为假设他分类下有20个文章
每次有使用者进来,我就等於送了 HTTP request 到对方网站 21 次
所以他要我从後端做
PHP 简单来说,我是用 file_get_contents 去索取对方的 DOMDocument
其他的思路跟前端一样,都是取得网址後去爬摘要
我的问题:
1. 这样就不会有连续 request 对方网站多次的问题吗?
2. WordPress 要设定有 visitor 进来时去确认文章更新,
是透过 wp-cron 吗? 有没有更好的解法?
3. WordPress 有内建 feed 的功能,这是给别人使用我的网站资料用的吧?
对我去爬别人网站是否没帮助?
4. 如果对方网站有提供 RSS feed,
是不是就可以透过 WordPress 某些内建功能转成 posts?
可以的话,可以大概提示一下怎麽做吗?
谢谢拨空看完 ^^
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 101.100.181.41
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Web_Design/M.1445935106.A.8B9.html
※ 编辑: content71 (101.100.181.41), 10/27/2015 16:40:49
1F:推 pm2001: 你用後端一样是送这麽多次 10/27 17:09
2F:推 oToToT: 他应该是说不会让user丢那麽多次request吃流量之类的吧 10/27 17:33
用 PHP 後端送这麽多次就不会吃流量吗?
※ 编辑: content71 (101.100.181.41), 10/27/2015 20:16:54
3F:推 oToToT: 吃後端,不吃前端user吧,没搞错的话 10/27 23:05
4F:推 yhn0tgb60: 感谢 YQL好像有使用限制 刚刚突然 result 都变null 10/27 23:43
5F:→ yhn0tgb60: 一直抓不到资料..... 10/27 23:43
6F:→ yhn0tgb60: 得再试新方法了 10/27 23:43
7F:→ Hevak: 有流量限制没错,也可以找其他服务试试 10/28 12:18