POST的網頁抓蟲練習查詢高鐵的時刻表問題
關於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)
```