BeautifulSoup извлечь ключевые слова html (действительно) - PullRequest
0 голосов
/ 09 сентября 2018

Я пытаюсь извлечь общую сумму задания из этого HTML-кода с помощью BeautifulSoup, используя следующий код и не могу получить текст из строки с ошибкой внизу:

код

 page = requests.get(URL)
 soup = BeautifulSoup(page.text, 'html.parser')  #.text
 print(soup.prettify())

 html = soup.prettify("utf-8")

 findJobs = soup.findAll('a', {'class': 'jobtitle turnstileLink', 'title' :True})
 for findJob in findJobs:   
         print (findJob['title'])

HTML код

<a class="jobtitle turnstileLink" data-tn-element="jobTitle" href="/pagead/clk? 
mo=r&amp;ad=44-==&amp;vjs=3&amp;p=6&amp;sk=&amp;fvj=1" id="sja6" 
onclick="setRefineByCookie([]); sjoc('sja6',1); convCtr('SJ')" 
onmousedown="sjomd('sja6'); clk('sja6');" rel="noopener nofollow" 
target="_blank" title="Student Mentor">Student Mentor</a>

Сообщение об ошибке

TypeError: list indices must be integers, not str

1 Ответ

0 голосов
/ 09 сентября 2018
findJobs = soup.findAll('a', {'class': 'jobtitle turnstileLink', 'title' :True})
for findJob in findJobs:   
    print (findJob['title'])
  • вам нужно найти a вместо span.
  • soup.findAll вернет список. Вы должны оперировать им как списком.

Обновление 20180911:

Я проверяю это, используя

from bs4 import BeautifulSoup

text = """
<a class="jobtitle turnstileLink" data-tn-element="jobTitle" href="/pagead/clk? 
mo=r&amp;ad=44-==&amp;vjs=3&amp;p=6&amp;sk=&amp;fvj=1" id="sja6" 
onclick="setRefineByCookie([]); sjoc('sja6',1); convCtr('SJ')" 
onmousedown="sjomd('sja6'); clk('sja6');" rel="noopener nofollow" 
target="_blank" title="Student Mentor">Student Mentor</a>
"""

# page = requests.get(URL)
soup = BeautifulSoup(text, 'html.parser')  #.text
print(soup.prettify())

html = soup.prettify("utf-8")

findJobs = soup.findAll('a', {'class': 'jobtitle turnstileLink', 'title' :True})
for findJob in findJobs:   
     print (findJob['title']) 
# Output: Student Mentor

Работает правильно. Где-то пропустили?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...