logo
Loading...

POST的網頁抓蟲練習查詢高鐵的時刻表問題 - Cupoy

關於POST的網頁抓蟲練習, 網路不少查詢高鐵的時刻表例子, 但目前結果有些問題, 拿來這邊詢問.....

pycrawler

POST的網頁抓蟲練習查詢高鐵的時刻表問題

2019/12/29 下午 05:01
Python網路爬蟲討論版
YU
觀看數:64
回答數:2
收藏數:2
pycrawler

關於POST的網頁抓蟲練習, 網路不少查詢高鐵的時刻表例子, 但目前結果有些問題, 拿來這邊詢問...

以下是我的程式碼, 系統一直回覆異常的結果, 不知道原因為何, 可以指點一下嗎?


import requests

from bs4 import BeautifulSoup

import re


form_data = {'StartStationName':'  南港站',

'EndStationName':'  台南站',

'SearchType':' S',

'StartStation':' 2f940836-cedc-41ef-8e28-c2336ac8fe68',

'EndStation':' 9c5ac6ca-ec89-48f8-aab0-41b738cb1814',

'DepartueSearchDate':' 2019/12/30',

'DepartueSearchTime':' 12:30',

'DepartueTrainCode':' ',

'DestinationSearchDate':' ',

'DestinationSearchTime':' ',

'DiscountType':''}

response_post = requests.post("https://www.thsrc.com.tw/tw/TimeTable/SearchResult", data = form_data)

soup_post = BeautifulSoup(response_post.text, "lxml")

print(soup_post)

回答列表

  • 2019/12/30 下午 05:28
    張維元 (WeiYuan)
    贊同數:2
    不贊同數:0
    留言數:1

    可以把錯誤訊息貼出來嗎?另外建議你可以把 header 也加上去試看看

  • 2019/12/30 下午 11:01
    張維元 (WeiYuan)
    贊同數:2
    不贊同數:0
    留言數:0

    嗨,因為他的資料其實從 JavaScript 非同步載入的,可以參考後面的講義。這邊附上程式碼:


    ```

    import requests

    from bs4 import BeautifulSoup

    import re

    hhh = {

       'accept':'application/json, text/javascript, */*; q=0.01',

       'accept-encoding':'gzip, deflate, br',

       'accept-language':'zh-TW,zh-CN;q=0.9,zh;q=0.8,en-US;q=0.7,en;q=0.6',

       'content-length':'340',

       'content-type':'application/x-www-form-urlencoded; charset=UTF-8',

       'cookie':'_ga=GA1.3.2024774511.1577229848; vpadn-ctid=b0de7c38-f2a8-33e4-49be-97e1680c71ac; vpadn-vpid=d5da4ae8-4ed4-1e74-d94f-f586e1e58522; vpadn-ce=1; vpadn-sd=1577229849319; ASP.NET_SessionId=zeommf45dqzxoo45aipvlp45; TS01ce71a1=013b146f10bd0005935ccf1d358b6f0c7faf238892fa3dc013dd885855d5feb9d18db39b590ee9f83c2a4e6fd9bc343b9cafa7cbef; _gid=GA1.3.1919084119.1577715308; _gat_UA-9967381-1=1; _gat_UA-9967381-26=1; vpadn-seid=vp86947895991-15777153085',

       'origin':'https//www.thsrc.com.tw',

       'referer':'https//www.thsrc.com.tw/tw/TimeTable/SearchResult',

       'sec-fetch-mode':'cors',

       'sec-fetch-site':'same-origin',

       'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',

       'x-requested-with':'XMLHttpRequest'

    }


    form_data = {

       'StartStationName':  '南港站',

       'EndStationName':  '左營站',

       'SearchType': 'S',

       'StartStation': '2f940836-cedc-41ef-8e28-c2336ac8fe68',

       'EndStation': 'f2519629-5973-4d08-913b-479cce78a356',

       'DepartueSearchDate': '2019/12/31',

       'DepartueSearchTime': '00:00',

       'DepartueTrainCode': '',

       'DestinationSearchDate': '',

       'DestinationSearchTime': '',

       'DiscountType': ''

    }

    response_post = requests.post("https://www.thsrc.com.tw/tw/TimeTable/Search", data = form_data, headers = hhh)

    soup_post = BeautifulSoup(response_post.text, "lxml")

    print(soup_post)

    ```