requests_html render 设置参数

requests_html render 设置参数

1. 不使用render

from requests_html import HTMLSession
session = HTMLSession()

#验证代理的使用
proxie = {
     "http":"http://{}:密码@主机:端口".format(用户名)
}
url = “http://httpbin.org/ip”
# 参数和用法跟requests差不多
response = session.get(url,proxies=proxie)

2. 使用render

from requests_html import HTMLSession
import asyncio
import pyppeteer

# 主要是重写HTMLSession类
# HTMLSession类是用来包装pyppeteer的,添加参数的也是在pyppeteer里面
class HTMLSession2(HTMLSession):
    @property
    def browser(self):
        if not hasattr(self, "_browser"):
            ip = "ip:prot"
            self.loop = asyncio.get_event_loop()
            # pyppeteer.launch() 需要添加的参数
            self._browser = self.loop.run_until_complete(pyppeteer.launch(headless=True, args=['--no-sandbox', '--proxy-server={}'.format(ip)]))
        return self._browser
session = HTMLSession2()
session.browser #开线程一定要的参数
url = "https://httpbin.org/get"
response = session.get(url=url)
response.html.render()
print(response.html.html)	#ip已经改变了

3. pyppeteer launch常用参数配置

# 是否以”无头”的模式运行,,即是否显示窗口,默认为 True(不显示)
headless=False
# 是否忽略 Https 报错信息,默认为 False
ignoreHTTPSErrors=True
# 防止多开导致的假死
dumpio=True
# args常用配置
args=[
# 不显示信息栏,比如:chrome正在受到自动测试软件的控制
'--disable-infobars',
# 最大化窗口
"--start-maximized",
# 设置UA
"--user-agent=Mozilla/5.0......",
# 取消沙盒模式,放开权限
"--no-sandbox",
# 添加代理
"--proxy-server=http://127.0.0.1:80"
]

借鉴博客

# request_html
1. https://blog.csdn.net/weixin_42715180/article/details/103035530
# pyppeteer 
2. https://blog.csdn.net/weixin_44029501/article/details/106547302
`response.html.render(timeout=10)` 的错误通常是由于渲染页面时发生了超时,可能是因为页面加载速度过慢或者页面中存在大量的 JavaScript 代码。解决这个问题的方法是增加超时时间,例如将 `timeout` 参数的值调大一些,例如: ```python response.html.render(timeout=30) ``` 另外,还可以尝试使用其他的渲染方法,例如使用 `requests_html` 库中的 `pyppeteer` 引擎,或者使用 `selenium` 库。例如,使用 `pyppeteer` 引擎的示例代码如下: ```python from requests_html import HTMLSession from requests_html import PyppeteerBrowser # 创建一个 HTMLSession 实例,并指定使用 Pyppeteer 引擎 session = HTMLSession(browser=PyppeteerBrowser()) # 发送 GET 请求,并获取页面内容 response = session.get('https://www.example.com') # 渲染页面,等待页面加载完成 response.html.render(timeout=30) # 解析页面内容中的标题 title = response.html.find('title', first=True).text print(title) ``` 在上面的代码中,我们使用 `HTMLSession()` 函数创建了一个 `HTMLSession` 实例,并指定使用 `PyppeteerBrowser` 引擎。然后,我们发送了一个 GET 请求并获取了页面内容,接着调用 `render()` 方法渲染页面,并将超时时间设置为 30 秒。最后,我们解析了页面内容中的标题并输出了标题的文本内容。 如果以上方法都无法解决问题,可能需要检查页面代码或者网络连接是否存在问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值