作者jakeasa123 (啊斑斑)
看板Python
標題[問題] 新手爬蟲遇到Refresh如何解決?
時間Thu Jun 1 00:41:04 2017
各位前輩好,最近因為一點需求在撰寫爬蟲程式。先是參照了一些網路資源試作了一些常見網站(如高鐵)的爬蟲,雖然也碰上不少問題但都還算順利解決。
近期在整理某些領域的國內論文,因此花了不少時間在「臺灣博碩士論文知識加值系統」裡頭,想說能不能用爬蟲的方式,蒐集論文的基本資料再來篩選,但碰上了一個問題。
在用以前的經驗來撰寫爬蟲程式時,總會碰上重新導向的語法:「<META HTTP-EQUIV="Refresh" CONTENT="0; ……」,查了一些資料後發現requests.__部分有allow_redirects的參數可以使用,但就算設置其為False也沒辦法讀到東西。應該說,貌似讀到的東西也就只有那段重新導向的語法(或者是我程式上有大問題)。
後續也Google了相關的資料,但還是沒能解決這個問題,只好來此向各位詢問,希望能獲得一些指引或解答。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.134.106.248
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1496248868.A.8BE.html
1F:→ kenduest: meta 那算是 html 檔案內容組成了,不是 requests 06/01 01:38
2F:→ kenduest: 本身處理的範圍。你需要的是解析若有這段 meta 06/01 01:38
3F:→ kenduest: 內容抓出請求的 url= 後面指定的網址 06/01 01:39
4F:→ kenduest: 然後把抓出來的 url 丟給 requests.get 重抓內容處理 06/01 01:40
5F:→ kenduest: 要判斷有無這類 meta 語法一般可以用 BeautifulSoup 06/01 01:41
6F:→ kenduest: 解析找這類內容,有找到拆解找出 url 網址拿來用 06/01 01:41
7F:→ kenduest: requests 內所謂 allow_redirects 是說一般的 http 06/01 01:42
8F:→ kenduest: 請求對方回應 301, 302 這類回應代碼時候,依據 06/01 01:43
9F:→ kenduest: header 內 Location 欄位指定的 url 來進行連結存取 06/01 01:43
謝謝指點!
剛剛改了一下,使用soup.find("meta")得出了其內容並擷取出URL=之後的網址,用該網址重新進行requests,但仍然是碰到相同的情況……得出的結果與首次的結果相同。
兩次均是得出:
<META HTTP-EQUIV="Refresh" CONTENT="0;
URL=/cgi-bin/gs32/gsweb.cgi/login?o=dwebmge">
問題仍然無法解決Orz
10F:→ kenduest: 後續要登入啊 說是另外一個新的處理議題 06/01 09:31
好的,我再試試。想說一般網頁不用登入就能查詢就沒注意到了。
要開始試的同時發現登入有驗證碼,看來短時間以我的功力有點困難 Orz
※ 編輯: jakeasa123 (140.138.152.2), 06/01/2017 12:52:16
11F:推 zerof: 試試 selenium 06/01 13:17