iT邦幫忙

1

python requests 缺少部分資料片段

各位前輩晚上好,小弟在嘗試爬蟲取網頁資料的時候,有成功取到資料,
但唯獨少了< section > 的部分。

  1. 想請為什麼html會少這部分的資料呢?
  2. 我該如何取得 < section >

目標資料:
https://ithelp.ithome.com.tw/upload/images/20220120/20114492coWnP5qPdB.png

程式碼:

import requests
from bs4 import BeautifulSoup

url = 'https://rent.houseprice.tw/'
res = requests.get(url, headers=headers)
html_doc = res.text
soup = BeautifulSoup(html_doc, 'html.parser')
print(soup)

結果:
https://ithelp.ithome.com.tw/upload/images/20220120/20114492u7AKCG5CzB.png

jiatool iT邦研究生 4 級 ‧ 2022-01-20 21:35:01 檢舉
如果網頁原始碼缺少這部分,那它有可能是用動態載入的
(開發人員工具 > Network > Fetch/XHR,再按F5重新整理網頁)
Peter iT邦新手 4 級 ‧ 2022-01-20 22:04:24 檢舉
感謝jiatool大大,透過 Fetch/XHR重整,確實會載入一個名為 「list/」的文件,裡面get的url是一個json結構,有我要的全部資料!
但想請問我該如何取得在 Fetch/XHR中,網站另外去get的url : https://rent.houseprice.tw/ws/list/ 呢?
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

3
I code so I am
iT邦高手 1 級 ‧ 2022-01-21 09:17:07
最佳解答

等個幾秒,再送出request即可。

import requests
from bs4 import BeautifulSoup

s = requests.Session()
url = 'https://rent.houseprice.tw/'
headers={'user-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"}
res = s.get(url, headers=headers)
html_doc = res.text
soup = BeautifulSoup(html_doc, 'html.parser')
print(soup)

import time
time.sleep(3)

url = 'https://rent.houseprice.tw/ws/list/'
res = s.get(url, headers=headers)
html_doc = res.text
soup = BeautifulSoup(html_doc, 'html.parser')
print(soup)

Peter iT邦新手 4 級 ‧ 2022-01-21 10:02:04 檢舉

謝謝大大,我知道怎麼搞了!

我要發表回答

立即登入回答