tgr*_*af2 6 python python-3.x python-requests python-requests-html
我正在使用 requests-html 并尝试渲染功能,但收效甚微。当我使用 python3.8 运行这个脚本时
#!/usr/bin/python3
from requests_html import HTML
file = "scrape/temp_file2.html"
with open(file) as html_file:
source = html_file.read()
html = HTML(html=source)
html.render()
match = html.find('#footer', first=True)
try:
print(match.hmtl)
except:
print('not found')
Run Code Online (Sandbox Code Playgroud)
它会导致回溯:
python3 scrape/test1.py
Traceback (most recent call last):
File "scrape/test1.py", line 10, in <module>
html.render()
File "/home/pi/.local/lib/python3.8/site-packages/requests_html.py", line 586, in render
self.browser = self.session.browser # Automatically create a event loop and browser
File "/home/pi/.local/lib/python3.8/site-packages/requests_html.py", line 730, in browser
self._browser = self.loop.run_until_complete(super().browser)
File "/usr/local/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
return future.result()
File "/home/pi/.local/lib/python3.8/site-packages/requests_html.py", line 714, in browser
self._browser = await pyppeteer.launch(ignoreHTTPSErrors=not(self.verify), headless=True, args=self.__browser_args)
File "/home/pi/.local/lib/python3.8/site-packages/pyppeteer/launcher.py", line 306, in launch
return await Launcher(options, **kwargs).launch()
File "/home/pi/.local/lib/python3.8/site-packages/pyppeteer/launcher.py", line 147, in launch
self.proc = subprocess.Popen( # type: ignore
File "/usr/local/lib/python3.8/subprocess.py", line 854, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/local/lib/python3.8/subprocess.py", line 1702, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
OSError: [Errno 8] Exec format error: '/home/pi/.local/share/pyppeteer/local-chromium/588429/chrome-linux/chrome'
Run Code Online (Sandbox Code Playgroud)
chromium 文件是一个可执行文件:
ls -l /home/pi/.local/share/pyppeteer/local-chromium/588429/chrome-linux/chrome
-rwxr-xr-x 1 pi pi 214121928 Mar 9 17:21 /home/pi/.local/share/pyppeteer/local-chromium/588429/chrome-linux/chrome
Run Code Online (Sandbox Code Playgroud)
如果我删除 html.render() 行,它可以正常工作(但不会渲染 javascript)。有任何想法吗?
经过多次搜索我找到了解决方案。问题是 pyppeteer 在 32 位 ARM 处理器上安装 x86-64 版本的 chromium。下面的解决方案是从 Ubuntu 安装 chromium 文件并从 pyppeteer 目录链接到这些文件。来自https://github.com/miyakogi/pyppeteer/issues/250:
\ninstall chromium-codecs-ffmpeg:\n https://launchpad.net/ubuntu/trusty/armhf/chromium-codecs-ffmpeg\n \xe2\x9e\x9c chromium-codecs-ffmpeg_65.0.3325.181-0ubuntu0.14.04.1_armhf.deb\n sudo dpkg --force-all -i chromium-codecs-ffmpeg_65.0.3325.181-0ubuntu0.14.04.1_armhf.deb\n\ninstall chromium-browser:\n https://launchpad.net/ubuntu/trusty/armhf/chromium-browser\n \xe2\x9e\x9c chromium-browser_65.0.3325.181-0ubuntu0.14.04.1_armhf.deb\n sudo dpkg --force-all -i chromium-browser_65.0.3325.181-0ubuntu0.14.04.1_armhf.deb\nRun Code Online (Sandbox Code Playgroud)\n其他注意事项:
\n| 归档时间: |
|
| 查看次数: |
2489 次 |
| 最近记录: |