2016-10-04 4 views
-2
from bs4 import BeautifulSoup 
from pprint import pprint 
import requests 

url = "http://chk.tbe.taleo.net/chk01/ats/careers/searchResults.jsp?org=CDI&cws=1" 

response = requests.get(url) 

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

table_main = soup.select("table#cws-search-results") 

table = table_main.find_all("tr") 

for tr in table: 
    job_title = tr.find_all("a") 
    job_location = tr.find_all("b") 

    job = { 
     "job_title": job_title, 
     "job_location": job_location 
    } 
    data.append(job) 

pprint(jobs) 
+0

Может ли кто-нибудь помочь мне с этим? –

+0

Это довольно очевидная ошибка, что простой отпечаток может помочь вам разобраться. –

ответ

2

Вы получаете сообщение об ошибке, потому что soup.select("table#cws-search-results") это возвращает список Tag объектов (список в 1-пункт в данном случае), а не один Tag объект, и find_all - это метод объектов Tag не объекта Python list.

Изменение:

table_main = soup.select("table#cws-search-results") 

к:

table_main = soup.select_one("table#cws-search-results") 

получить Tag объект, представляющий основную таблицу, а затем вызвать find_all на этом объекте будет работать, как ожидалось.

+0

Спасибо! Ошибка исчезла. Но результат кажется неправильным: {'job_location': 'Account Executive', 'job_title': 'Account Executive'} это должно быть: {'job_location': 'Dallas, TX', 'job_title': 'Account Executive' } как я могу это сделать? –

Смежные вопросы