我正在尝试为 Northvolt 公司提供特定职位列表时创建提醒 (https://northvolt.com/career)。该职位的名称是“能源协调员”。目前他们没有寻找我的职位,所以我想创建一个脚本,可以在可用时提醒我。
我尝试过使用BeautifulSoup。我们的想法是每天在职业网页上抓取/搜索“能源协调员”一词,并在有空时向我发送电子邮件。
问题是,当我请求时,我认为我的终端没有收到正确的 HTML。我不确定如何描述它或者这是否有意义。不管怎样,下面是一些代码。
import requests
from bs4 import BeautifulSoup
result = requests.get("https://northvolt.com/career")
source = result.text
soup = BeautifulSoup(source, "html.parser")
print(soup.prettify())
当我打印汤并在终端搜索栏中从网页搜索各种关键字时,我没有找到关键字。当我在
requests.get("")
中使用另一个网页时,我找到了终端中显示在网页上的所有内容。我在这里做错了什么,为什么我从 Northvolt 网页发出的请求与其他网页相比如此奇怪?
此图片显示了我在终端中收到的内容。一面文字墙,没有提及任何有关职位列表的内容
在该页面上使用 AJAX 获取作业。如果您在浏览器中打开“网络”选项卡,您应该会看到其中一个请求从 https://feed.jobylon.com/feeds/150d2f7a9df44df8a1ac9c5c794f7220/?format=json获取 JSON 数据。
我假设该 URL 中的 ID 是该公司在 Jobylon 上的 ID。
BeautifulSoup 仅获取静态 HTML 页面。它不会像浏览器那样加载它们并执行 JavaScript。 Selenium 能够做到这一点。
但是,在这种情况下,您可以直接从 Python 代码中的上面的 URL 获取 JSON 数据。
例如:
import requests
url = "https://feed.jobylon.com/feeds/150d2f7a9df44df8a1ac9c5c794f7220/"
querystring = {"format":"json"}
headers = {
'Accept': "application/json",
'Accept-Language': "en-US,en;q=0.5",
'Content-Type': "application/json;charset=UTF-8",
'Origin': "https://northvolt.com",
'DNT': "1",
'Referer': "https://northvolt.com/career",
'Connection': "keep-alive",
'TE': "Trailers",
'cache-control': "no-cache",
}
response = requests.request("GET", url, headers=headers, params=querystring)
data = response.json()
print(data)
为了轻松生成如上所述的 Python 代码,我通常在 Firefox 的“网络”选项卡中右键单击一个请求,单击“复制为 cURL”,将其导入 Postman(通过单击“导入”,然后单击“粘贴原始文本”)并然后在Postman中点击请求下的“Code”并将其导出为Python代码片段。
我上传了一个简短的演示视频这里。
不确定我是否有确切的答案,但如果您阅读以下文章 - 它包含在 LinkedIn 上搜索职位帖子的所有详细信息,我觉得它可能很容易转移到您的问题:
https://medium.com/p/8b1cd877ff01
如果您有任何跟进。让我知道。