Re: [問題] 請問想查詢高鐵時刻表的問題

看板Python作者 (堅持、耐心、努力學習)時間6年前 (2019/02/19 10:40), 6年前編輯推噓1(109)
留言10則, 6人參與, 6年前最新討論串2/3 (看更多)
※ 引述《chaotic0307 (堅持、耐心、努力學習)》之銘言: : 各位先進好,小弟剛自學python沒多久,最近在練習一個高鐵時刻表的爬蟲卻 : 一直卡關,不知道問題出在哪,用的是python3.6版 : 程式碼如下: : import requests : from bs4 import BeautifulSoup : url = 'http://www.thsrc.com.tw/tw/TimeTable/SearchResult' : form_data = { : 'StartStation':'977abb69-413a-4ccf-a109-0272c24fd490', : 'EndStation':'9c5ac6ca-ec89-48f8-aab0-41b738cb1814', : 'DepartueSearchDate':'2019/01/30', : 'DepartueSearchTime':'09:30', : 'SearchWay':'DepartureInMandarin' : } : #原例子是用SearchDate,但在高鐵網頁按F12看到是DepartueSearchDate,不知有錯嗎? : response_post = requests.post(url, data=form_data) : soup_post = BeautifulSoup(response_post.text, 'lxml') : soup_post : 原本要用下面的方式來記錄般車,但是用美麗湯解析後發現class裡面根本沒有column1 : 不知道問題出在哪? : # 所有班車(train_number) : td_col1 = soup_post.find_all('td', {'class':'column1'}) : train_numbers = [] : for tag in td_col1: : # print(tag) : train_number = tag.text : train_numbers.append(train_number) : 有嘗試加header或是用urllib的方式,但好像都查詢不到 : 跪求高手解惑~謝謝! : 原例: : https://github.com/music1353/pyHowFun/blob/master/LESSON4%20%E7%88%AC%E8%9F%B : 2%E5%AF%A6%E6%88%B0%20-%20%E9%AB%98%E9%90%B5%E6%99%82%E5%88%BB.ipynb 自己的文章自己回~ 不知道去年高鐵網站是不是有改過,一些書上的方法好像都失效了 透過chrome的開發者工具,可以在XHR底下找到回傳的data 自己做功課的了解是這應該是動態網頁,資料格式應該是json(? 試過一些方法還是抓不到(跟cookies or session有關嗎? 在Response Headers 當中顯示 Cache-Control: private, max-age=5 沒有Allow,是不是代表無法抓取? 但在網頁按右鍵->檢查->copy element貼到記事本是有看到的 跪求高手解惑~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.42.225.115 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1550544004.A.3C7.html ※ 編輯: chaotic0307 (114.42.225.115), 02/19/2019 11:56:19

02/19 17:14, 6年前 , 1F
我以為你解決了....
02/19 17:14, 1F

02/19 19:04, 6年前 , 2F
找很多網頁跟方法都還是解不開....我太菜了
02/19 19:04, 2F

02/19 22:49, 6年前 , 3F
bs4 有時會抓的會有差,res.text 中有
02/19 22:49, 3F

02/19 22:49, 6年前 , 4F
bs4 沒有
02/19 22:49, 4F

02/20 11:40, 6年前 , 5F
可能header不對 被當成機器人了吧
02/20 11:40, 5F

02/20 23:38, 6年前 , 6F
謝謝,再來試試看.....
02/20 23:38, 6F

02/23 08:31, 6年前 , 7F
我怎麽記得有API可以接?
02/23 08:31, 7F

03/20 17:38, 6年前 , 8F
現在交通部的ptx有提供api了
03/20 17:38, 8F

03/20 17:38, 6年前 , 9F

03/20 17:38, 6年前 , 10F
如果要爬動態網站,可能得用Selenium之類的方式
03/20 17:38, 10F
文章代碼(AID): #1SQso4F7 (Python)
文章代碼(AID): #1SQso4F7 (Python)