2016-07-21 5 views
-1

Я хочу просмотреть некоторую информацию от the Kickstarter website. Информация структурирована и каждый код проекта Kickstarter выглядит так же:Хотите извлечь текст из HTML-документа

<div class="project-card-content"> 
<h6 class="project-title"><a data-pid="714867756" data-score="null" data-version="null" href="/projects/massoudhassani/mine-kafon-drone?ref=category_recommended" target="">Mine Kafon Drone</a></h6> <p class="project-byline">Massoud Hassani</p> 
<p class="project-blurb"> 
Introducing the Mine Kafon Drone, an airborne demining system developed to clear all land mines around the world in less than 10 years 
</p> 
</div> 

мне нужны следующие три строки для каждого <div class="project-card-content">. Например:

  1. Mine Kafon Drone
  2. Масуд Хассани
  3. Вводя в Mine Kafon Дрон, бортовую систему разминирования, разработанная, чтобы очистить все наземные мины по всему миру менее чем за 10 лет

Для первого результата я использовал этот код в Python:

import urllib 
    import urllib.request 
    from bs4 import BeautifulSoup 

    theurl = "https://www.kickstarter.com/discover/advanced?category_id=16&woe_id=23424829&sort=popularity&seed=2448324&page=1" 
    thepage = urllib.request.urlopen(theurl) 
    soup = BeautifulSoup(thepage,"html.parser") 

    project1 = soup.find('div', {'class': 'project-card-content'}).findChildren('a') 
    print (project1) 

Результат:

[<a data-pid="714867756" data-score="null" data-version="null" href="/projects/massoudhassani/mine-kafon-drone?ref=category_recommended" target="">Mine Kafon Drone</a>] 

Но я только хочу строковый "Mine Kafon Drone"

ответ

1

Просто получить текст из первой «» метки вы нашли.

text = project1[0].text 
print(text) 

Результат будет выглядеть так:

Mine Kafon Drone 

Для получения данных от каждого:

data = [] 
for div in soup.find('div', class_='project-card-content'): 
    data.append(div.find('div', class_='project-title').text) 
+0

о да ... это работает. И как я могу получить список со всеми данными с сайта в этом html-поле? например: «Mine Kafon Drone» и «Petcube Bites + Petcube Play: Лечение и уход за домашними животными удаленно» «Голоса человечества - капсула космического времени в мире». Если я добавлю _all в файл soup.find, я получаю сообщение об ошибке. THANKS –

+0

@SebastianFischer, что вы подразумеваете под «списком со всеми данными»? –

+0

Мне нужны все данные этого класса. На веб-сайте [link] (https://www.kickstarter.com/discover/categories/technology?ref=discover_index) вы можете видеть, что каждый проект имеет класс = «название проекта». на самом деле python показывает только первый «проект-заголовок». Мне нужен список со всеми заголовками. Бит, когда я использую soup.find_all, он не работает. –

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