Python 2.7 使用BeautifulSoup从网站中刮取网站和其他URL的内容

Python 2.7 使用BeautifulSoup从网站中刮取网站和其他URL的内容,python-2.7,web-scraping,beautifulsoup,Python 2.7,Web Scraping,Beautifulsoup,上下文 我正试图从一家公司的网站(我有权限)上搜刮,并从他们的工作区中提取工作职位 所有职位都在第一页(目录)上列出了高级详细信息,但职位的详细信息位于唯一的URL上。我想让我的刮板能够识别目录中的相关位置,然后刮板唯一的URL 到目前为止我编写的代码 import requests from bs4 import BeautifulSoup url = "http://implementconsultinggroup.com/career/#/6257" r = requests.get(

上下文

我正试图从一家公司的网站(我有权限)上搜刮,并从他们的工作区中提取工作职位

所有职位都在第一页(目录)上列出了高级详细信息,但职位的详细信息位于唯一的URL上。我想让我的刮板能够识别目录中的相关位置,然后刮板唯一的URL

到目前为止我编写的代码

import requests
from bs4 import BeautifulSoup 

url = "http://implementconsultinggroup.com/career/#/6257"
r = requests.get(url)

soup = BeautifulSoup(r.content)

links = soup.find_all("a")

for link in links:
     if "career" in link.get("href") and 'COPENHAGEN' in link.text:
             print "<a href='%s'>%s</a>" %(link.get("href"), link.text)
导入请求
从bs4导入BeautifulSoup
url=”http://implementconsultinggroup.com/career/#/6257"
r=请求。获取(url)
汤=美汤(r.含量)
链接=汤。全部查找(“a”)
对于链接中的链接:
如果link.get(“href”)中的“职业”和link.text中的“哥本哈根”:
打印“%”(link.get(“href”)、link.text)
这给了我以下输出:

View Position

</a>
<a href='/career/business-analyst-within-human-capital-management/'>
Business analyst within human capital management
COPENHAGEN • We are looking for an ambitious student with an interest in HR 
who is passionate about working in the cross-field of people management, 
business and technology




View Position

</a>
<a href='/career/management-consultants-within-strategic-workforce-planning/'>
Management consultants within strategic workforce planning
COPENHAGEN • We are looking for consultants with profound experience from 
other consultancies
查看位置
)然后从该页面中提取详细信息

战略员工队伍规划中的管理顾问 在Implement Consulting Group,我们希望在咨询行业有所作为,因为我们相信,在一个日益全球化和动荡的世界中,创造具有影响力的变革是成功的先决条件。 我们经历了大量激动人心的项目,因此,我们正在寻找有能力的同事,他们在与管理层合作方面具有丰富的知识,并且希望与一批鼓舞人心的同事合作,为我们的客户创造真正的影响。 工作内容–随影响而变化 工作内容各不相同,但包括: 设计连接和支持业务战略的劳动力战略 实施战略性劳动力规划 协助建立雄心勃勃、数据驱动的劳动力规划方法 实施人才、职业和绩效管理计划 开发和优化人力资源流程 人力资源信息系统与人力资源数字化 提供与制定人力资源战略相关的咨询服务 协助发展团队和专业领域 我们的项目范围广泛,通常包括优化人力资源管理工具和流程、人员绩效管理解决方案和建立卓越组织。我们的使命之一是不断改善我们的领导行为,成为最具吸引力的工作场所。 我们正在寻找 至少持有一个相关硕士学位 至少有3-5年的工作经验,最好是其他咨询公司的工作经验 具有设计和实施战略和/或运营员工队伍规划的经验 有能力和愿望将员工战略与业务战略联系起来 能够在所有组织层面与客户建立良好的合作关系 能够解决问题并领导团队 你热衷于创造结果,并且相信在实施变革时会采取一种欣赏的方法。你可以是规范的,但要知道没有什么是黑白的。你热爱多样性,你既善于分析,又善于感同身受。在你未来的工作中,你希望同时担任顾问和项目经理的角色,并且你对作为顾问的工作的几个方面感兴趣。 我们提供什么? 我们提供有吸引力的绩效薪酬,以及优秀的发展机会。我们以高度的自由度和责任心开展工作,并相互支持,不断提高帮助客户创造卓越业绩的能力。我们提供一种真正独特的文化,一个由乐于助人的同事组成的网络,以及一家试图改变咨询业务以产生影响的公司。 申请 有关该职位的更多信息,请联系Julius M.Opstrup,+45 2338 0004。有关招聘流程的更多信息,请联系Julie Palmqvist,电话+45 6124 4847。 申请截止日期是尽快的。我们期待着您的来信!
请访问我们的职业页面,了解更多关于Implement Consulting Group的职业信息,或了解更多关于我们哥本哈根办事处的信息。

我认为没有其他东西可供借鉴。运行它并亲自查看:

import requests
from bs4 import BeautifulSoup 

base = "http://implementconsultinggroup.com"
url = "http://implementconsultinggroup.com/career/#/6257"

req = requests.get(url).text
soup = BeautifulSoup(req,'html.parser')
links = soup.select("a.box-link")

for link in links:
    res = requests.get(base + link.get("href")).text
    soup = BeautifulSoup(res,'html.parser')
    title = soup.select_one("h1.section__title").get_text() if soup.select_one("h1.section__title") else ""
    details = soup.select_one("div.rte").get_text()
    print(title, details)

为什么要在循环中重建标记?我只是试图澄清上面的预期输出@德米特里-没有具体的原因。您将如何创建循环?@Pallbroe,您需要在工作列表页面上完整描述工作还是thort工作?谢谢Mithu!这似乎工作得很好!围绕标题的一个问题-我已经添加到上面。如果有效,请确保按下向上投票按钮并接受它作为答案。我现在不在电脑旁。我一回来就看一看你的补充问题。谢谢。谢谢-已按+1,期待您对上述问题的回答。嗨,Mithu-您有机会看看上述内容吗?@Pallbroe,对我的解决方案有何反馈?我的反馈是,仅代码解决方案对未来读者的价值有限,因为它不能立即显示解决方案的本质。如果你可以在前面加上一两句文字来描述你写这篇文章时的想法,这通常是非常有用的。谢谢你的帮助。
import requests
from bs4 import BeautifulSoup 

url = "http://implementconsultinggroup.com/career/#/6257"
r = requests.get(url)
soup = BeautifulSoup(r.content)

position_block = soup.find('ul', class_="list-articles")
position_list = position_block.find_all('li')

position_links = []

for position in position_list:
    position_links.append(position.a['href'])


base_url = "http://implementconsultinggroup.com"

descriptions = []

for link in position_links:
    r = requests.get(base_url + link)
    soup = BeautifulSoup(r.content)

    descriptions.append(soup.find('div', class_='contentwithrelated').get_text())