Re: [問題] 網頁爬蟲
※ 引述《TimJack (飽喀喀)》之銘言:
: 各位大大好
: 請問以下code:
: from urllib.request import urlopen
: from bs4 import BeautifulSoup
: html_doc ='http://www.twse.com.tw/fund/BFI82U'
: soup = BeautifulSoup(html_doc,'html.parser')
: for i in soup.body.tbody.find_all('tr'):
: print(i.td.get_text())
: 列印如下錯誤:
: AttributeError Traceback (most recent call last)
: <ipython-input-22-f987a99b5e34> in <module>()
: 4 soup = BeautifulSoup(html_doc,'html.parser')
: ----> 5 for i in soup.body.tbody.find_all('tr'):
: 6 print(i.td.get_text())
: AttributeError: 'NoneType' object has no attribute 'tbody'
: 請問各位大大
: 為何會這樣呢
: 謝謝
html_doc那個網址本身是json檔,缺乏html標籤,
所以用BeautifulSoup解析不到任何東西
先把html_doc用requests.post抓下來,此時變數型態是response,
再用json函式庫把那個看起來像json的response的變數型態轉換成json
再把這個json的變數型態轉換成dict,就可以依序抓出
import requests
from bs4 import BeautifulSoup
import json
payload = {'respose':'html','type':'today'}
url = requests.post('http://www.twse.com.tw/fund/BFI82U',data=payload)
json_data = json.loads(url.text)
# 下面只是變成資料庫的格式,可略過
fields_list = json_data['fields']
for data_list in json_data['data']:
for i in range(1,4):
print(fields_list[0],',',data_list[0],',',fields_list[i],',',data_list[i])
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.227.166.43
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1532835178.A.6A2.html
※ 編輯: liquidbox (36.227.166.43), 07/29/2018 11:33:40
討論串 (同標題文章)
Python 近期熱門文章
PTT數位生活區 即時熱門文章