[問題] 爬取JS render網站

作者: ec2242 (當場輾斃)   2020-09-01 22:14:21
最近在練習爬蟲 想爬104的頁面
但無奈遇到頁面是由JS render的(拿愛奇藝當範例)
目前code如下:
import requests
from bs4 import BeautifulSoup
url = 'https://www.104.com.tw/company/1a2x6bkonm'
headers = {
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/84.0.4147.135 Safari/537.36',
'Referer':
'https://www.104.com.tw/company/1a2x6bkonm'
}
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.text, 'lxml')
print(soup)
無奈輸出後body只有
<div id="globalbar">
<div id="bar_m104">
<div id="global_bk">
剩下全沒了
想請問要怎麼爬取這種類似網頁呢? 謝謝!
作者: TakiDog (多奇狗)   2020-09-01 22:42:00
打開F12 切換到Network 按下XHR 你要的資料在那
作者: chickengod (雞大俠)   2020-09-01 23:13:00
from selenium import webdriver
作者: bdbddbdb (金某聊)   2020-09-02 22:09:00
用F12看你要的資料是怎麼出來的,真的不行就用selenium
作者: alansyue (alansyue)   2020-09-05 11:45:00
找 api 看看
作者: hakosaki (hakosaki)   2020-09-08 11:05:00
有一隻 api 但好像要帶token之類的
作者: aidansky0989 (alta)   2020-09-14 13:58:00
建議你先寫網頁程式,連網頁都不會寫運維不用反爬,你就不知道怎麼搞前端對後端接口發ajax請求,返回的是json數據,json.loads(request.body.decode())
作者: ToastBen (吐司邊)   2020-09-21 01:11:00
requests-html可以render,若遇到ddos protection還是得靠selenium.webdriver

Links booklink

Contact Us: admin [ a t ] ucptt.com