先前發文
DAY 01 : 參賽目的與規劃
DAY 02 : python3 virtualenv 建置
DAY 03 : python3 request
DAY 04 : 使用beautifulsoup4 和lxml
DAY 05 : select 和find 抓取tag
DAY 06 : soup解析後 list取值
先來介紹一下 主要目標 url : https://www.ptt.cc/bbs/hotboards.html
爬取的起手式 開啟瀏覽器進入要爬的網頁ctrl + shift + i 和 ctrl + shift + c 找到要爬的資料tag
但別急著開爬先觀察一下網頁的結構
你會發現要爬的資料都被包在 div class為b-ent裡 , 且其他資料都包含在a class為board裡
那知道只要拿a class就可以拿到一個板的基本資料 ,那我們就不用多抓div class為b-ent了
board_find = soup.find_all('a', class_= 'board')
board_select = soup.select('a.board')
抓到所有符合a.board條件後 , 就像取list一樣 如果只想取第2筆Baseball的資料只要
board_select[1].select('board-name')就可以抓到Baseball了
那今天主要目的是抓到全部的所以用for迴圈取得值。
for board in board_select:
h_name = board.find('div', class_= 'board-name')
print(h_name.text)
h_page = board.select('span')[0]
print(h_page.text)
h_classname = board.select('div.board-class')[0]
print(h_classname.text)
h_title = board.select('div.board-title')[0]
print(h_title.text)
h_url = 'https://www.ptt.cc' + board['href']
print(h_url)
抓到值後利用.text輸出tag內的值
有了板裡得url後 , 繼續使用request來抓到板內的文章 , 但由於每個板的尺度不同 , 需要進行18歲的確認
那明天的我們就要成為18歲以上嘍!
今日歌曲~
渣泥ZANI - 可是