2016-12-20 2 views
0
import requests 
from bs4 import BeautifulSoup 

url = 'https://www.brightscope.com/401k-rating/240370/Abengoa-Bioenergy-Company-Llc/244317/Abengoa-Bioenergy-Us-401K-Savings-Plan/' 
thepage = requests.get(url) 
urlsoup = BeautifulSoup(thepage.text, "html.parser") 

plandata = urlsoup.find(class_="plans-section").text 

print(plandata) 

I;. М, пытаясь наскрести только класс рейтинга номер, но когда я использую этот код, я ничего не получаю обратно :(Python и BeautifulSoup - Скрип Текст

  1. Как царапать только класс паспортной номера?
  2. Как я мог наскрести несколько классов (это наиболее важная часть) и поместить их в список вот читаемым?

Моя мысль была бы в цикле каждая страница Царапины и добавить их к файл .csv с новой строкой.

Пример ниже;

Rating #1, Company Name1, etc, etc, etc 

Rating #2, Company Name2, etc, etc, etc 

Я просто не могу преодолеть горб, чтобы понять это. Спасибо за любую помощь!

Редактировать - класс «планы-раздел» содержит данные, которые я хочу, но он, кажется, разбит на два тега div под ним. Я хочу очистить данные в классе «текст данных выше среднего». Проблема в том, что каждая страница имеет только один и тот же «текст-текст» и что происходит после изменений на каждом разделе/​​странице. Какие варианты существуют для меня?

+0

URL, который вы указали, не содержит никакого класса = 'data-text above-average' –

+0

Вы правы. Я только что обновил URL-адрес, и у него есть класс 'data-text over-average', но я действительно хочу очистить любой класс, который имеет «текст-текст», я добавил звездочку, чтобы заменить любой текст за «текст-текст». –

ответ

1
import requests 
from bs4 import BeautifulSoup 


url = 'https://www.brightscope.com/401k-rating/141759/Aj-Kirkwood-Associates-Inc/143902/Aj-Kirkwood-Associates-Inc-401K-Profit-Sharing-Plan/' 
thepage = requests.get(url) 
urlsoup = BeautifulSoup(thepage.text, "html.parser") 

rate = urlsoup.find(class_='rating-number').text 
name = urlsoup.find(class_="name").text 
print(rate, name) 

из:

59 A.J. Kirkwood & Associates, Inc. 

использовать re фильтр, чтобы соответствовать всем классом содержат определенный текст:

If you pass in a regular expression object, Beautiful Soup will filter against that regular expression using its search() method. 

в вас случай:

import re 
soup.find_all(class_=re.compile(r'data-text.+')) 
+0

'Запросы на импорт из BS4 импорта BeautifulSoup URL =' https://www.brightscope.com/401k-rating/141759/Aj-Kirkwood-Associates-Inc/143902/Aj-Kirkwood-Associates-Inc-401K -Profit-Sharing-Plan/' thepage = request.get (url) urlsoup = BeautifulSoup (thepage.text, "html.parser") plandata = urlsoup.find (класс _ = "plan-section"). print (plandata) ' –

+0

Я пытаюсь очистить данные с этого сайта, которые будут меняться между каждой страницей. Вышеупомянутый «код» должен был показать это. Данные, которые я хочу, находятся под «дизайном» –

+1

, пожалуйста, обновите вопрос, и я обновлю свой ответ. –

1

Что именно вы хотите выбраться со страницы? Если вы хотите получить div по классу, это должно помочь.

urlsoup.findAll("div", { "class" :"rating-number"}) 
Смежные вопросы