网页渲染的4种方法

网页渲染的4种方法

使用Selenium库

Selenium是一个自动化测试工具,也可以用于爬虫。它可以模拟真实用户的行为,包括点击、填写表单等操作,从而获取完整的动态渲染页面。以下是一个简单的示例代码:

from selenium import webdriver
 
# 创建一个浏览器实例
driver = webdriver.Chrome()
# 打开网页
driver.get("http://example.com")
# 获取页面源码
html = driver.page_source
# 关闭浏览器
driver.quit()
# 6.043582201004028

使用PhantomJS库

PhantomJS是一个无界面的浏览器,它可以在后台执行网页渲染并返回页面源码。以下是一个示例代码:

from selenium import webdriver
 
# 创建一个PhantomJS浏览器实例
driver = webdriver.PhantomJS()
# 打开网页
driver.get("http://example.com")
# 获取页面源码
html = driver.page_source
# 关闭浏览器
driver.quit()
# 5.2301108837127686

使用Requests-HTML库

Requests-HTML是一个基于Requests库的HTML解析库,它可以执行JavaScript并获取动态渲染的页面。以下是一个示例代码:

from requests_html import HTMLSession
 
# 创建一个HTML会话
session = HTMLSession()
# 打开网页
response = session.get("http://example.com")
# 渲染页面
response.html.render()
# 获取页面源码
html = response.html.html
# 4.586602687835693

使用Pyppeteer库

Pyppeteer是一个使用Chrome DevTools Protocol控制无头Chrome浏览器的库。以下是一个示例代码:

import asyncio
from pyppeteer import launch
 
async def main():
    # 创建一个浏览器实例
    browser = await launch()
    # 创建一个页面实例
    page = await browser.newPage()
    # 打开网页
    await page.goto("http://example.com")
    		# selector选择器 元素
            await page.select('#year', f'{lyear}')
            await page.select('#month', f'{month}')
            # 按钮
            element = await page.waitForXPath('//*[@id="wrap"]//input') # xpath
            box = await element.boundingBox()
            target_x = box['x'] + box['width'] // 2
            target_y = box['y'] + box['height'] // 2
            await page.mouse.click(target_x, target_y)
            time.sleep(2) # 等待ajax数据加载
            # 获取页面源码
            html = await page.content()
    # 关闭浏览器
    await browser.close()
 
asyncio.get_event_loop().run_until_complete(main())
# 3.305264711380005
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值