Algebra-FUN / WeReadScan

扫描“微信读书”已购图书并下载本地PDF的爬虫
https://algebra-fun.github.io/WeReadScan/
865 stars 165 forks source link

运行出错 #7

Open ivoidcat opened 3 years ago

ivoidcat commented 3 years ago

Wait for QRCode Scan...0/15turns Login Succeed. Task launching... navigate to https://weread.qq.com/web/reader/50532a905cde3050538da2b preparing to scan "竞争战略" scanning chapter "推荐序1" Traceback (most recent call last): File "/Users/zhigangyang/development/WXRead/WX.py", line 15, in weread.scan2pdf('https://weread.qq.com/web/reader/50532a905cde3050538da2b') File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/WeReadScan/WeRead.py", line 171, in scan2pdf self.shot_full_displayed_element(context, f'{png_name}.png') File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/WeReadScan/WeRead.py", line 60, in shot_full_displayed_element element.screenshot(file_name) File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/selenium/webdriver/remote/webelement.py", line 585, in screenshot png = self.screenshot_as_png File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/selenium/webdriver/remote/webelement.py", line 567, in screenshot_as_png return base64.b64decode(self.screenshot_as_base64.encode('ascii')) File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/selenium/webdriver/remote/webelement.py", line 557, in screenshot_as_base64 return self._execute(Command.ELEMENT_SCREENSHOT)['value'] File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/selenium/webdriver/remote/webelement.py", line 633, in _execute return self._parent.execute(command, params) File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute self.error_handler.check_response(response) File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: unknown error: unhandled inspector error: {"code":-32000,"message":"Cannot take screenshot with 0 width."}

Algebra-FUN commented 3 years ago

请问你使用的是ChromeDriver吗?因为不同的WebDriver在headless模式下的渲染方式是不一样的,所以有些浏览器可能会造成element没有全部渲染 推荐使用ChromeDriver

ivoidcat commented 3 years ago

是使用的ChromeDriver。

Algebra-FUN commented 3 years ago

请问你使用的是ChromeDriver吗?因为不同的WebDriver在headless模式下的渲染方式是不一样的,所以有些浏览器可能会造成element没有全部渲染 推荐使用ChromeDriver

是使用的ChromeDriver。

所以,没话说了?@Algebra-FUN 最近一次commits 显示2021年2月7日,也没解决这个问题,我下载了,还是报这个错误

@ivoidcat @snow212-cn 抱歉,没有及时回复,本人大三,学业繁忙,无暇顾及,望谅解

Algebra-FUN commented 3 years ago
image

Algebra-FUN added the bug label yesterday

⬆︎⬆︎⬆︎ 真是搞笑 ⬆︎⬆︎⬆︎。

@snow212-cn bug fix不了被鸽,是个很正常的现象。github很多上千star的repo也有不少issues一鸽就是半年的。所以这很正常

Algebra-FUN commented 3 years ago

@snow212-cn

去掉headless无头选项,以有头模式(有窗口)运行,不报错了,但是,截取的图片又不全了! (0.8.2) 启用headless就疯狂报错 {"code":-32000,"message":"Cannot take screenshot with 0 width."}

截取完整全屏图片就是利用headless的特性,所以headless是需要的 (当然也有不通过headless进行截取全屏的方法,通过图片拼接的方式,但是不易实现)

启用headless就疯狂报错 {"code":-32000,"message":"Cannot take screenshot with 0 width."} 这个问题可能是webdriver和selenium自身的问题,不是我代码的问题 较为直接的检验方式,就是在你的环境下,写一个脚本,开启headless模式,直接screenshot,看看这个问题是否会出现:

  • 如果出现,那就是环境的问题
  • 如果不出现,那可能是我的代码引起的副作用导致的

当然如果你有兴趣的话,也可以自学一下selenium,没准你会有更好的解决方案,也欢迎大家讨论交流

wzt12 commented 2 years ago

edge

wzt12 commented 2 years ago

哪个是可以运行