2016-10-13 3 views
0

도움이 필요합니다. 내 출력이 틀린 것 같습니다. dept, job_title, job_location의 값을 올바르게 추가하려면 어떻게해야합니까? 그리고 dept의 값을 가진 html 태그가 있습니다. 어떻게 이러한 태그를 제거 할 수 있습니까? 시니어 :python append() 및 html 태그를 제거하십시오.

'JOB_TITLE' 'IL 시카고', 컨설팅

'job_location을'

내 코드

response = requests.get("http://hortonworks.com/careers/open-positions/") 
soup = BeautifulSoup(response.text, "html.parser") 

jobs = [] 


div_main = soup.select("div#careers_list") 


for div in div_main: 
    dept = div.find_all("h4", class_="department_title") 
    div_career = div. find_all("div", class_="career") 
    title = [] 
    location = [] 
    for dv in div_career: 
     job_title = dv.find("div", class_="title").get_text().strip() 
     title.append(job_title) 
     job_location = dv.find("div", class_="location").get_text().strip() 
     location.append(job_location) 

    job = { 
     "job_location": location, 
     "job_title": title, 
     "job_dept": dept 
    } 
    jobs.append(job) 
pprint(jobs) 

그것은

{ 'job_dept'과 같아야합니다 컨설턴트 - 중부 '

각 변수에 대해 1 개의 값.

+1

는 당신이 얻을 출력을 보여주십시오 –

+0

출력 ... job_dept : 모든 부서, 작업 _ 위치 : 모든 위치, job_title : 전체 제목 –

답변

0

당신의 HTML의 구조는 계층 적없는, 연속, 그래서 당신이 가서 당신은 당신의 작업 목록 및 업데이트 부서 제목을 반복해야합니다 :

import requests 
from bs4 import BeautifulSoup, Tag 
from pprint import pprint 
headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:21.0) Gecko/20130331 Firefox/21.0'} 
response = requests.get("http://hortonworks.com/careers/open-positions/", headers=headers) 

soup = BeautifulSoup(response.text, "html.parser") 

jobs = [] 


div_main = soup.select("div#careers_list") 


for div in div_main: 
    department_title = "" 
    for element in div: 
     if isinstance(element, Tag) and "class" in element.attrs: 
      if "department_title" in element.attrs["class"]: 
       department_title = element.get_text().strip() 
      elif "career" in element.attrs["class"]: 
       location = element.select("div.location")[0].get_text().strip() 
       title = element.select("div.title")[0].get_text().strip() 
       job = { 
        "job_location": location, 
        "job_title": title, 
        "job_dept": department_title 
       } 
       jobs.append(job) 

pprint(jobs) 
+0

이것을 실행할 때이 오류가 발생합니다. ifinstance (element, Tag) 및 element.attrs.has_key ("class") : AttributeError : 'dict'객체에 'has_key'속성이 없습니다. –

+0

파이썬 3에서 작동하도록 내 대답을 업데이트했습니다. – nullop

+0

와우. 놀랄 만한. 잘 작동한다. 출력이 정확합니다. 나는 pycharm을 사용하고 있습니다. "job_dept"부분 : department_title. department_title이 강조 표시되었습니다. 그것은 말했다 : 'department_title'이름을 정의 할 수 없습니다 –

관련 문제