iT邦幫忙

0

Python爬蟲Table欄位問題

def eps_get(request):
     if request.method == 'POST':
        stockID = request.data.get("StockID",0)
        res = requests.get(url+stockID+name,headers = headers)
        res.encoding = "utf-8"
        soup = BeautifulSoup(res.text,"lxml")
        data = soup.find("table",class_="tb-stock text-center tbBasic")
        dfs = pd.read_html(data.prettify())
        df = dfs[0]
        Eps2021Q1 =df.iloc[0,9]
        Eps2020Q4 =df.iloc[0,8]
        Eps2020Q3 =df.iloc[1,8]
        Eps2020Q2 =df.iloc[2,8]
        Eps2020Q1 =df.iloc[3,8]
        Eps2019Q4 =df.iloc[0,7]
        Eps2019Q3 =df.iloc[1,7]
        Eps2019Q2 =df.iloc[2,7]
        Eps2019Q1 =df.iloc[3,7]

目前是抓固定欄位去取得當年當季的EPS
https://ithelp.ithome.com.tw/upload/images/20210612/20137886p3xvCvyF4n.png

可是如果這支股票是2013年後上市上櫃的 那麼欄位就會往前移
https://ithelp.ithome.com.tw/upload/images/20210612/20137886AOMbuDlMMq.png

有想過先抓第一列的年份再取下去的欄位
不過年份的Table跟EPS的Table是分開的

參考網址https://histock.tw/stock/6547/%E6%AF%8F%E8%82%A1%E7%9B%88%E9%A4%98

感謝各位大大解答

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
小魚
iT邦大師 1 級 ‧ 2021-06-13 08:42:55

抓固定欄位這件事本身就不對吧,
更何況資料不是你能夠控制的,
(除非整個都是自己寫的,
不過那也不用爬了)
應該是要先去判斷年,
然後再去抓資料吧.

1
japhenchen
iT邦超人 1 級 ‧ 2021-06-15 07:56:20

不要以行index當做抓取的條件,而是以行名,建議用陣列做正則比對,要是網頁設計人員改名字你就花了,真的找不到就塞空值null或空白

我要發表回答

立即登入回答