2017-08-28 69 views
-1

语境使用BeautifulSoup从网站

我试图刮掉公司网站(我有权限),并从他们的工作部分岗位刮网站和其他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) 

这给了我下面的输出写到:

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 

我想刮刀刮去上面的输出的所有内容。因此,浏览URLS并提取这些页面的内容。

如果有人知道如何做到这一点,或者可以指导我如何为我的刮刀创建此功能,那么该功能会很棒。

预期输出

我想刮板访问上面这使我的实际工作发布页面(http://implementconsultinggroup.com/career/management-consultants-within-strategic-workforce-planning/)的网址,然后提取该页面的细节。内劳动力战略规划

管理顾问公司在实施咨询集团,我们希望做咨询行业的差异,因为我们相信,创建具有影响变革的能力是在日益全球化和湍流成功的先决条件世界。 我们经历了大量令人兴奋的项目,因此我们正在寻找有能力与管理层合作的知名同事,他们希望通过与一群鼓舞人心的同事合作,为客户创造真正的影响力。 工作内容 - 更改与冲击 的工作内容有所不同,但包括: 设计一个环节,支持企业战略的战略人力规划 建立一个雄心勃勃的和数据驱动的方法,以人力资源规划 实施人才协助 实现劳动力战略,职业和绩效管理方案 开发和优化的人力资源流程 HRIS和人力资源的数字化 关于提供咨询服务,制定人力资源战略 开发团队和专业知识的领域协助 我们的项目范围广泛,通常包括优化管理工具和人力资源部门内部的流程e绩效管理解决方案和建立卓越组织。我们的使命之一是不断改善我们的领导行为,成为最有吸引力的工作场所。 我们正在寻找人员 至少持有一个相关硕士学位 至少有3-5年的经验,最好来自其他顾问 具有设计和实施战略和/或运营人力规划的经验 有能力和欲望劳动力战略与业务战略 有在各组织层次 能够解决问题和领导团队 你是热衷于创造成果与客户建立了良好的合作的能力连接起来,你还相信有鉴赏方法在执行变更。你可以是规范的,但是要知道没有什么是黑白的。你喜欢多元化,而且你既有分析能力又有同情心。在你将来的工作中,你希望担任顾问和项目经理的角色,并且你有兴趣作为顾问处理这个工作的几个方面。 我们提供什么? 我们提供优厚的薪酬performancerelated包以及非常能干的和雄心勃勃的同事之间良好的发展机遇。我们高度自由地履行职责,相互支持,努力不断帮助客户创造出色的业绩。我们提供真正独特的文化,有用的同事网络以及试图改变咨询业务以创造影响力的公司。 申请 有关职位的更多信息,请联系Julius M. Opstrup,+45 2338 0004。有关招聘过程的更多信息,请联系Julie Palmqvist,+45 6124 4847. 申请截止日期为尽快。我们期待您的回音! 访问我们的职业页面,了解有关实施咨询集团职业生涯的更多信息,或了解有关我们哥本哈根办事处的更多信息。

+0

,为什么你重建标签的循环? –

+0

我只是试图澄清上面的预期输出。 @Dmitriy - 没有具体的原因。你将如何创建循环? –

+0

@PalleBroe,你需要在工作列表页面上完整地描述工作或工作吗? –

回答

0

我觉得其他什么都没有刮。运行它,看看自己:

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) 
+0

谢谢Mithu!这似乎运作良好!标题周围 一个问题 - 我已经加入上述内容。 –

+0

如果有效,请确保按下投票按钮并接受它作为答案。这一刻我不在我的电脑附近。我一会儿就会看看你的另一个问题。谢谢。 – SIM

+0

谢谢 - 已经按+1,并期待您对上述问题的回答。 –

1
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()) 
+0

@PalleBroe,对我的解决方案有何反馈? –

+1

我的反馈是,仅有代码的解决方案对未来的读者而言价值有限,因为它没有立即显示解决方案的本质。如果你可以用一两句话来描述你在写这些时所想的内容,那通常是非常有用的。 – halfer

+0

嗨德米特里, 我无法得到它的运行,但似乎Mithus以上代码是伟大的工作。感谢您的帮助。 –

相关问题