如何使用Python和BeautifulSoup获得完整的工作描述

如何使用Python和BeautifulSoup获得完整的工作描述,python,html,css,web-scraping,beautifulsoup,Python,Html,Css,Web Scraping,Beautifulsoup,我真的需要从报纸上搜刮招聘启事。我设法为每个职位刮取了标题和链接,现在我正在努力刮取每个职位的完整职位描述(我不想要摘要——我想要每个职位的完整职位描述) 我的代码如下所示: from bs4 import BeautifulSoup import requests import pandas as pd import time url = 'https://www.indeed.com/jobs?q=data+engineer&l=United+States' response =

我真的需要从报纸上搜刮招聘启事。我设法为每个职位刮取了标题和链接,现在我正在努力刮取每个职位的完整职位描述(我不想要摘要——我想要每个职位的完整职位描述)

我的代码如下所示:

from bs4 import BeautifulSoup
import requests
import pandas as pd
import time

url = 'https://www.indeed.com/jobs?q=data+engineer&l=United+States'

response = requests.get(url) 
data = response.text
soup = BeautifulSoup(data, 'html.parser')
jobs = soup.find_all('div',{'class':'jobsearch-SerpJobCard'})
  
for job in jobs:
    title = job.find('a',{'class':'jobtitle'}).text
    link1 = job.find('a',{'class':'jobtitle'}).get('href')
    link = 'https://www.indeed.com' + link1
    
    #for each JOB's webpage, you need to connect to the link first:
    job_response = requests.get(link)
    job_data = response.text
    job_soup = BeautifulSoup(job_data, 'html.parser')
    
    job_description_tag = job_soup.find('div',{'id':'jobDescriptionText'})
    job_description = job_description_tag.text if job_description_tag else "N/A"
    
    print('Job Title:', title, '\nLink:', link, '\nJob Description:', job_description, '\n---')
    
我想要每个工作的完整工作描述,并尝试使用job_description_标记获取它,但它只返回“N/A”(我将if语句放在那里,用于职位公告没有工作描述的情况)

每个职位的输出都返回一个“N/A”,因此显然有问题

作为参考,通过检查其中一个作业的作业描述,可以看到我试图刮取的作业描述标记的html代码如下所示:

from bs4 import BeautifulSoup
import requests
import pandas as pd
import time

url = 'https://www.indeed.com/jobs?q=data+engineer&l=United+States'

response = requests.get(url) 
data = response.text
soup = BeautifulSoup(data, 'html.parser')
jobs = soup.find_all('div',{'class':'jobsearch-SerpJobCard'})
  
for job in jobs:
    title = job.find('a',{'class':'jobtitle'}).text
    link1 = job.find('a',{'class':'jobtitle'}).get('href')
    link = 'https://www.indeed.com' + link1
    
    #for each JOB's webpage, you need to connect to the link first:
    job_response = requests.get(link)
    job_data = response.text
    job_soup = BeautifulSoup(job_data, 'html.parser')
    
    job_description_tag = job_soup.find('div',{'id':'jobDescriptionText'})
    job_description = job_description_tag.text if job_description_tag else "N/A"
    
    print('Job Title:', title, '\nLink:', link, '\nJob Description:', job_description, '\n---')
    
  • 1年以上数据工程师或类似职位经验
  • 具有数据建模、数据仓库和构建ETL管道的经验
  • SQL方面的经验
  • 了解python或任何通用脚本语言
  • 具有Hive/Spark等大数据技术的经验
任务说明
亚马逊网络服务(AWS)营销的核心任务是向客户介绍云计算和我们的服务。每天都有数百万客户通过多种渠道与我们合作。想象一下,构建一个平台,使AWS能够与工程师、CTO、CIO和CEO对话,向他们介绍AWS服务,并在他们的云之旅中赋予他们权力。我们的服务作为宣布新的AWS产品的基础,并且独特的位置来重新定义我们的云社区如何消耗信息并与AWS进行合作。

概述
您是否希望为市场领先的云服务AWS提供支持,以增加客户群和收入?您是否愿意加入一个团队,通过分析客户在AWS网站内外的行为来提高AWS平台的知名度和采用率?您是否希望授权我们的AWS营销团队做出数据驱动的决策,从而进一步确立AWS在云计算领域的领先地位?

作为AWS的数据工程师,您将在一个大型、极其复杂和动态的数据仓库环境中工作。我们正在寻找能够集成多种异构数据源(如Adobe Site Catalyst、Adobe Target、Sales Force、Adobe Connect和AWS central data warehouse)并构建高效、灵活、可扩展的数据仓库和报告解决方案的人才。您应该热衷于学习新技术,并能够使用这些技术实施解决方案,以实现现有平台的升级。您应该具有出色的业务和沟通技能,能够与业务所有者合作开发和定义关键业务问题,然后构建回答这些问题的数据集。您应该擅长设计、实施和操作稳定、可扩展、低成本的解决方案,以便将数据从生产系统流入数据仓库和面向最终用户的报告应用程序。最重要的是,您应该热衷于处理庞大的数据集,以及喜欢将数据集整合在一起以回答业务问题并推动增长的人。

在AWS,您可以控制构建的每一层。您将拥有一个不断增长的营销平台的核心部分,服务于1000家内部客户和数百万家外部客户,而不是现有服务的一小部分。您将以多种AWS服务为基础,并有机会直接与这些团队合作,以改进我们的核心产品。在AWS,我们每天与客户合作,验证我们的想法,收集反馈,并改进平台。

地点:该职位必须位于华盛顿州西雅图。美国国内提供的搬迁援助。

  • 计算机科学、工程或相关技术领域的研究生/硕士学位
  • 出色的故障排除和问题解决能力
  • 有亚马逊红移或其他分布式计算技术的经验
  • 作为数据工程师或相关专业(如软件工程师、商业智能工程师、数据科学家)的行业经验,具有操纵、处理和从大型数据集中提取价值的记录
  • 有AWS工具和技术的经验
  • 拥有云计算和基于UNIX/Linux系统的实际操作经验
  • 具备跨不同内部组织有效工作的能力
  • 优秀的书面和口头沟通能力
亚马逊致力于多元化和包容性的工作场所。亚马逊是一家机会均等的雇主,不因种族、国籍、性别、性别认同、性取向、受保护的退伍军人身份、残疾、年龄或其他受法律保护的身份而歧视。欲申请住宿的残疾人,请访问https://www.amazon.jobs/en/disability/us.

任何帮助都将不胜感激

您的代码几乎是正确的。这一行代码中只有一个错误:

job\u data=response.text

替换为:


job\u data=job\u response.text

从外部URL加载完整的工作描述。使用以下示例了解如何加载它:

导入请求
从bs4导入BeautifulSoup
标题={
“用户代理”:“Mozilla/5.0(X11;Ubuntu;Linux x86_64;rv:88.0)Gecko/20100101 Firefox/88.0”
}
url=”https://www.indeed.com/jobs?q=data+工程师和l=美国+美国”
api_url=”https://www.indeed.com/viewjob?viewtype=embedded&jk={job_id}”
soup=BeautifulSoup(requests.get(url,headers=headers).content,“html.parser”)
对于汤中的作业。选择('a[id^=“job_216;”]”):
作业id=作业[“id”]。拆分(“\u”)[-1]
s=美丽组(
requests.get(api\u url.format(job\u id=job\u id