作者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://www.ptt.cc/bbs/Web_Design/M.1445935106.A.8B9.html
※ 編輯: content71 (101.100.181.41), 10/27/2015 16:40:49
推 pm2001: 你用後端一樣是送這麼多次 10/27 17:09
推 oToToT: 他應該是說不會讓user丟那麼多次request吃流量之類的吧 10/27 17:33
用 PHP 後端送這麼多次就不會吃流量嗎?
※ 編輯: content71 (101.100.181.41), 10/27/2015 20:16:54
推 oToToT: 吃後端,不吃前端user吧,沒搞錯的話 10/27 23:05
推 yhn0tgb60: 感謝 YQL好像有使用限制 剛剛突然 result 都變null 10/27 23:43
→ yhn0tgb60: 一直抓不到資料..... 10/27 23:43
→ yhn0tgb60: 得再試新方法了 10/27 23:43
→ Hevak: 有流量限制沒錯,也可以找其他服務試試 10/28 12:18