查各分點的經緯度
爬各個地址的經緯度,不一定要用google map api 也可以用國土資訊系統
因為量不多不用申請帳號,使用爬蟲的方式一筆一筆查
其中
- 退號程度: (預設為不退號,可任意選擇前後退號之模糊程度)
少數地址原先查不到,可以用退號的方式查
針對這個網站查不到的可以再用google map補上
import scrapy
import pandas as pd
from scrapy import FormRequest
brokerList_url = 'http://www.twse.com.tw/brokerService/brokerList?response=html&lang=zh'
branchList_url = 'http://www.twse.com.tw/brokerService/branchList.html'
class StockCodeSpider(scrapy.Spider):
name = 'broker_list'
start_urls = [brokerList_url, branchList_url]
custom_settings = {
'DOWNLOAD_DELAY': 1,
'CONCURRENT_REQUESTS': 1,
'MONGODB_COLLECTION': name,
'MONGODB_ITEM_CACHE': 1,
'MONGODB_UNIQ_KEY': [("證券商代號", 1)],
}
def parse(self, response):
data = pd.read_html(response.text)
data = data[0]
del data['分公司']
if response.url == brokerList_url:
data['公司'] = '總公司'
else:
data['公司'] = '分公司'
url = 'https://moisagis.moi.gov.tw/moiap/gis2010/content/user/matchservice/singleMatch.cfm'
for info in data.to_dict('records'):
yield FormRequest(url, meta={'info': info},
formdata={
'address': info['地址'],
'matchRange': '0',
'fuzzyNum': '02',
'roadEQstreet': 'true',
'subnumEQnum': 'true',
'isLockTown': 'false',
'isLockVillage': 'false',
'ex_coor': 'EPSG:4326',
'U02DataYear': '2015',
'output_xml': '1'
},
callback=self.parse_info, dont_filter=True)
def parse_info(self, response):
item = response.meta['info']
ths = [th.text() for th in response.dom('tr').eq(0)('th').items()]
tds = [td.text() for td in response.dom('.bwhite').eq(0)('td').items()]
item.update(dict(zip(ths, tds)))
yield item
爬出來的資料如下
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>證券商代號</th>
<th>X</th>
<th>Y</th>
<th>一級發布區</th>
<th>二級發布區</th>
<th>公司</th>
<th>地址</th>
<th>最小統計區</th>
<th>村里</th>
<th>比對代碼</th>
<th>比對說明</th>
<th>縣市</th>
<th>證券商名稱</th>
<th>鄉鎮</th>
<th>開業日</th>
<th>電話</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>9A00</td>
<td>121.513134666134</td>
<td>25.0468585626746</td>
<td>A6305-01-003</td>
<td>A6305-01</td>
<td>總公司</td>
<td>重慶南路1段2號7樓、18樓及20樓</td>
<td>A6305-0013-00</td>
<td>光復里</td>
<td>AL0-F2-0-2018M06</td>
<td>完全比對</td>
<td>臺北市</td>
<td>永豐金</td>
<td>中正區</td>
<td>771108</td>
<td>02-2311-4345</td>
</tr>
<tr>
<th>1</th>
<td>9A9x</td>
<td>121.307920753094</td>
<td>24.990936314534</td>
<td>A6801-87-008</td>
<td>A6801-87</td>
<td>分公司</td>
<td>南華街77號3樓之1、3樓之2</td>
<td>A6801-1397-00</td>
<td>南華里</td>
<td>AL0-F2-0-2018M06</td>
<td>完全比對</td>
<td>桃園市</td>
<td>永豐金-桃園</td>
<td>桃園區</td>
<td>841201</td>
<td>03-335-2581</td>
</tr>
之前爬過上市櫃公司資訊,同樣查出經緯度,就可以做出公司附近的券商分點是否有在買的特徵。
個人覺得地緣券商實在是個很扯的特徵,這個這麼好查,買給你看也太明顯了,真的有什麼內線要低調偷偷買吧,但如果是很多員工在買就比較說得通了(員工有辦法知道公司狀況嗎?),如果是刻意買給大家看炒一波就合理了。