[问题] 爬取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