Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x python3javascript网页刮刀_Python 3.x_Web Scraping - Fatal编程技术网

Python 3.x python3javascript网页刮刀

Python 3.x python3javascript网页刮刀,python-3.x,web-scraping,Python 3.x,Web Scraping,Python3是否有一个非Selenium的基于JavaScript的刮取库?我正在努力刮https://www.mailinator.com/v2/inbox.jsp?zone=public&query=test,但收件箱中加载了JavaScript。我不想使用Selenium的原因是我不希望它在运行时打开一个窗口 这是我的非工作代码: import requests from bs4 import BeautifulSoup as soup INBOX = "https://www.mail

Python3是否有一个非Selenium的基于JavaScript的刮取库?我正在努力刮
https://www.mailinator.com/v2/inbox.jsp?zone=public&query=test
,但收件箱中加载了JavaScript。我不想使用Selenium的原因是我不希望它在运行时打开一个窗口

这是我的非工作代码:

import requests
from bs4 import BeautifulSoup as soup
INBOX = "https://www.mailinator.com/v2/inbox.jsp?zone=public&query={}"
def check_inbox(name):
    stuff = soup(requests.get(INBOX.format(name)).text,"html.parser")
    print(stuff.find("ul",{"class":"single_mail-body"}))
check_inbox("retep")
有这样的图书馆吗


在Selenium之外,我找不到谷歌搜索
Python3 javascript scraper的任何内容。

实际上您不需要javascript,因为它是客户端,所以您可以模拟它

如果您查看网页(开发者工具>网络),您将看到有一个
websocket
连接到此:

wss://www.mailinator.com/ws/fetchinbox?zone=public&query=test


现在,如果您使用python实现websocket客户端,您将能够干净地获取邮件(请参见:)。

可能与@Hum4n01d重复这是python3,而不是python。我不明白为什么会有什么不同。不同的语法、库不兼容,但总体上解决方案仍然是相同的。在开始抓取之前,您需要一个用JavaScript呈现页面的库。嗯。。。它对我不起作用-
WebSocket.exceptions.InvalidStatusCode:状态代码不是101:500
导入WebSocket,从bs4异步导入BeautifulSoup作为汤收件箱=”wss://www.mailinator.com/ws/fetchinbox?zone=public&query=test“async def hello():与websockets.connect(收件箱)异步,作为ws:response=wait ws.recv()打印(响应)异步IO。获取\u事件\u循环()。运行\u直到\u完成(hello())
这是一个内部服务器错误。但这是另一个话题。我建议你再问一个问题,你在尝试什么,为什么它不起作用。我的猜测是,你必须发送一些标题(可能是cookies)。您还应该查看源代码,并了解它们是如何实现websocket连接的。也许你必须注册一个频道。另外,在询问社区之前,尝试5分钟多一点;)选择
WS
filter,它代表“websockets”,我注意到其中一个标题每次都在更改-
Sec WebSocket Key
。我将如何生成其中一个?