iT邦幫忙

0

python爬蟲 抓不到span的資料

https://ithelp.ithome.com.tw/upload/images/20180522/20108822CFLWGYbYR9.pnghttps://ithelp.ithome.com.tw/upload/images/20180522/20108822OI3QDWPxYn.png
我的code很簡單只是要先看看爬出來的資訊 在做篩選
code:
import requests
from bs4 import BeautifulSoup
res = requests.get('http://www.e-bus.taipei.gov.tw/newmap/Tw/Map?rid=10821&sec=0')
soup = BeautifulSoup(res.text,'html.parser')
print(res.text)

文字解說:第一張是我要抓的公車進站時間

第二張是說明 我print(res.text) 就是沒有出現到站時間

2 個回答

0
froce
iT邦大師 5 級 ‧ 2018-05-23 08:02:00

幫你看了一下,那個是用ajax去取,然後再由前端呈現的,所以你直接用request取不到。

ajax網址:
http://www.e-bus.taipei.gov.tw/newmap/Js/RouteInfo?rid=10821&sec=0&_=1527033355647

陳同學 iT邦新手 5 級 ‧ 2018-05-23 14:02:36 檢舉

謝謝您的回覆

陳同學 iT邦新手 5 級 ‧ 2018-05-23 14:54:50 檢舉

不好意思from selenium import webdriver用這個行嗎

froce iT邦大師 5 級 ‧ 2018-05-23 16:33:45 檢舉

selenium一定可以,不過會很慢,除非必要不要用。
重點是ajax的資料解析完後,你再怎麼呈現而已。直接用ajax取出的JSON去處理就好。

2
Maliao
iT邦新手 5 級 ‧ 2018-05-23 08:35:47

這個網頁的實時公車資訊是使用js傳回來的,這樣requests是取不到的,但是可以先使用瀏覽器的開發者工具,選擇"Network"了解數據是由哪邊過來的。

直接請求json網址加上時間戳,就可以取到公車的資訊。

探索一下兩邊網頁的對應,就能取到目前的停靠站了。

看更多先前的回應...收起先前的回應...
陳同學 iT邦新手 5 級 ‧ 2018-05-23 14:02:45 檢舉

謝謝您的回覆

陳同學 iT邦新手 5 級 ‧ 2018-05-23 14:18:15 檢舉

不好意思https://ithelp.ithome.com.tw/upload/images/20180523/20108822pjcRjFZmwp.png
我的看起來怎麼跟你的不一樣

陳同學 iT邦新手 5 級 ‧ 2018-05-23 15:28:58 檢舉

我找到了~https://ithelp.ithome.com.tw/upload/images/20180523/20108822sgmFkJjiRy.png
只是沒有跑出跟你第二張一樣的畫面

Maliao iT邦新手 5 級 ‧ 2018-05-24 07:51:39 檢舉

你可能找錯了,你在看下,紅5的ajax url是這個

http://www.e-bus.taipei.gov.tw/newmap/Js/RouteInfo?rid=10821&sec=0&_=1527119143185

我要發表回答

立即登入回答