Skip to main content

第八课:Puppeteer 工具

用于 捕捉JS动态渲染的页面

我们以这个网页为例 http://quotes.toscrape.com/js/

import requests
from lxml import etree
headers={
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.46",
    'cookie':'kg_mid=2632d7fd1ac9cee3f1396792e241152a; kg_dfid=3x7flr2ALA4A2mFgvv3Lch0V; kg_dfid_collect=d41d8cd98f00b204e9800998ecf8427e; Hm_lvt_aedee6983d4cfc62f509129360d6bb3d=1705216019,1705216125,1705219847; kg_mid_temp=2632d7fd1ac9cee3f1396792e241152a; Hm_lpvt_aedee6983d4cfc62f509129360d6bb3d=1705220424'
}
url='http://quotes.toscrape.com/js/'
response=requests.get(url,headers=headers).text
html=etree.HTML(response)
content_list=html.xpath("//div[@class='quote']/span[@class='text']/text()")
print(content_list)
# 可以看到返回的是一个空列表
# 因为这个页面是 JavaScript 渲染而成的,我们所看到的内容都是网页加载后又执行了 JavaScript 之后才呈现出来的,
# 因此这些条目数据并不存在于原始 HTML 代码中,而 requests 仅仅抓取的是原始 HTML 代码。
# 接下来的puppeteer代码见文件 puppeteer教程.js