看板 Python 關於我們 聯絡資訊
※ 引述《ilay (說唱猜做玩)》之銘言: 引言吃光~~ 主要還是需要cookies,不然直接request會有權限不足的問題 直接從 http://emap.pcsc.com.tw/01.htm 連的話, 網頁會出現"連線逾時"的頁面, 所以,要從http://www.7-11.com.tw/search.asp開始 這邊會向http://emap.pcsc.com.tw/emap_switch.aspx POST資料+redirect cookie也是從這邊取得的 當取得到cookie後,就可以去取得你要的xml資料 以下是我寫的一個範例:(只抓取各縣市的鄉鎮 GetTown) # -*- coding: utf-8 -*- import urllib, urllib2, cookielib # origin url: "http://www.7-11.com.tw/search.asp" # get cookies from "http://emap.pcsc.com.tw/emap_switch.aspx" data = { 'eshopparid': '999', 'eshopid': '996', 'eshoppwd': '711storemap', 'sid': '2', 'storecategory': '2', 'showtype': '1', 'storeid': '' } cj = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) login_data = urllib.urlencode(data) opener.open('http://emap.pcsc.com.tw/emap_switch.aspx', login_data) #print cj._cookies #print cj._cookies['emap.pcsc.com.tw']['/']['yearmonth'].value #print cj._cookies['emap.pcsc.com.tw']['/']['ASP.NET_SessionId'].value # area code area_code = { '台北市': '01', '基隆市': '02', '新北市': '03', '桃園縣': '04', '新竹市': '05', '新竹縣': '06', '苗栗縣': '07', '台中市': '08', '台中縣': '09', '彰化縣': '10', '南投縣': '11', '雲林縣': '12', '嘉義市': '13', '嘉義縣': '14', '台南市': '15', '台南縣': '16', '高雄市': '17', '高雄縣': '18', '屏東縣': '19', '宜蘭縣': '20', '花蓮縣': '21', '台東縣': '22', '澎湖縣': '23', '金門縣': '25', '馬祖' : '24' } # start req some data # GET TOWM for i in area_code: data = { 'commandid': 'GetTown', 'cityid': area_code[i] } post_data = urllib.urlencode(data) resp = opener.open('http://emap.pcsc.com.tw/EMapSDK.aspx', post_data) print i, resp.read() 大致上是這樣,有錯誤的地方再提出來討論 :) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.74.124.193
ilay:神人出現了 <(_ _)> 04/19 13:45
ilay:請問一下撈出來的xml要取區域名稱堆成list要怎做呢@@ 04/19 16:38
kilfu0701:這就要parsing xml吧 04/19 16:48
retard:強 04/19 17:17
zenixls2:實用 04/20 00:40
iincho:高手 04/21 14:33
bob123:讚 04/22 03:55
ilay:對了我發現為什麼loop跑下去的時候是從桃園開始XD 04/22 10:45
ilay:北北基都消失了XD 04/22 10:45
ilay:抱歉看錯了 但是這為什麼不是照順序跑下來的@@ 04/22 10:47
bob123:要照順序用list或OrderedDict 04/22 16:26