我正在构建一个完全自动化的求职应用程序,有趣的是,自动化部分相当简单,但是废弃的部分并不多.

简而言之,requests+beautifulsoup适用于我正在废弃的大多数域,但在workable页上try 相同的过程时,没有任何效果:

import requests
from bs4 import BeautifulSoup as bs

session = requests.Session()
url = 'https://apply.workable.com/breederdao-1/j/602097ACC9/'
req = session.get(url)

title = soup.find('h1', {'data-ui': 'job-title'})
print(title)

>>> None

details = soup.find('span', {'data-ui': 'job-location'})
print(details)

>>> None

这两个元素都小于body,但是当我try 获取页面标题时,我确实得到了我所期望的:

title_0 = soup.find('title')
print(title_0)

>>> <title>Data Analyst (Fully Remote) - BreederDAO</title>

我也try 过使用await+HTMLSEssion/AsyncHTMLSession,但只要元素在body之内,每find()个仍然返回None个.

有人能教我这个吗?我目前的假设是,该网站有某种反报废机制,但我甚至不知道从哪里开始寻找.不过,这个元素看起来确实很特别:

<html...
  <head>...</head>
  <body>
    .
    .
    .
    <noscript>
      <iframe height="0" width="0" src="https://www.googletagmanager.com/ns.html?id=GTM-WKS7WTT&amp;gtm_auth=SGnzIn3pcB7S4fevFXOKPQ&amp;gtm_preview=env-2&amp;gtm_cookies_win=x" style="display: none; visibility: hidden;">
        #document
          <!DOCTYPE html>
          <html lang="en">
            <head>
              <meta charset="utf-8">
              <title>ns</title>
            </head>
            <body>
              " "
            </body>
          </html>
      </iframe>
    </noscript>
    .
    .
    .
  </body>
</html>

推荐答案

您看到的数据是通过javascript从外部URL加载的.要加载它,可以使用requests个模块.例如:

import json
import requests


# 602097ACC9 is from your URL
url = "https://apply.workable.com/api/v2/accounts/breederdao-1/jobs/602097ACC9"
data = requests.get(url).json()

# uncomment to print all data:
# print(json.dumps(data, indent=4))

print(data["title"])
print(", ".join(data["location"].values()))

输出:

Data Analyst (Fully Remote)
Philippines, PH, Makati, Metro Manila

Html相关问答推荐

在Apps Script中连接CSS与HTML

如何在angular 17.2中使用routerLink解决此错误

由于列中的图像,它们不会随FlexBox中的窗口大小进行调整

如何阻止Chromecast图标出现在HTML5视频

页脚与主要内容重叠

Tailwind CSS:overflow-y Property Not Scrolling Unreliably to Bottom with top-[63px]

在css中,如何在英雄版块的标题后面做一个粘性的导航栏?

Chatbox底部显示新消息,并向上推送旧消息

如何将tmap按钮和图例更改为位于页脚后面?

:invalid Select 器的惰性判断

使用简单的 HTML 设计公司徽标和文本

HTML 如何根据屏幕尺寸调整/裁剪视频背景?

我如何设置括号的样式,使它们不会挂在旁边的其他字符下面

如果不透明的元素出现在下方,为什么不透明度会使一个元素出现在另一个元素上方?

具有淡入/淡出效果的 CSS 选框

是否有一种静态方式可以根据暗模式 Select 一张或另一张图像?

Woocommerce Storefront 产品类别页面和购物车菜单项 colored颜色 更改

将 div 项与 flexbox 对齐

如何使用 CSS 使多个元素和多个动画无限动画

为什么这些卡不排成一排