Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 18, 2015 17:38:21

sourser
Зарегистрирован: 2015-02-16
Сообщения: 18
Репутация: +  0  -
Профиль  

Создание парсера

Здравствуйте , друг дал мне задачку:
Вывести список “жанров” при запуске скрипта
Your text to link here…
уже подключил requests(v2.5) и beautifulsoup(v4.3) (по его подсказке) __ Python v2.7 , OC windows8

Насколько я понимаю , алгоритм такой:
1) Подключение к сайту , при помощи requests
2) Запись в переменную информации, которую мы отсеяли при помощи (beautifulsoup)
3) Вывод переменной на экран
Вот , как реализовать в коде, пока что не знаю, впервые столкнулся)
Читаю документацию, но толком не могу понять . как они работают и как их связать, в голове каша
Можете написать пример , и с которым обьяснением или ссылкой на него))

Отредактировано sourser (Фев. 18, 2015 17:43:57)

Офлайн

#2 Фев. 18, 2015 17:48:52

Alex_HH
Зарегистрирован: 2014-03-03
Сообщения: 91
Репутация: +  13  -
Профиль   Отправить e-mail  

Создание парсера

Ну если не надо привязываться к бьэтифулсоупу и реквесту, то вот ваша задач решена с помощью библиотеки для парсинга граб.

from grab import Grab
g = Grab()
g.go("http://fs.to/video/films/group/film_genre/")
print(g.doc.select('//div[@class="main"]').text())



————–
Зимой и летом heavy metall.
Технический прогресс - это падение вверх. Alex_HH (с)
Эстетизация жестокости есть квинтэссенция смысла человеческого существования. Alex_HH (с)
После бога идет не пустота, там метаданные. Alex_HH (с)

Офлайн

#3 Фев. 18, 2015 21:20:44

sourser
Зарегистрирован: 2015-02-16
Сообщения: 18
Репутация: +  0  -
Профиль  

Создание парсера

спасибо)
Мне нужно только request & beautifulsoap

Офлайн

#4 Фев. 18, 2015 23:06:37

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Создание парсера

1) получаем html содержимое страницы

response = requests.get(url)
html = response.text
2) передаем ее в Bs4 для анализа. Поиск необходимой информации - это уже маленькая наука. методов и способов явно не 1. Смотрим на содержание страницы, видимо что списки категории фильмом обложены классом “b-list-links”, можно от этого начинать и далее уже разбирать получившийся список.
bs=bs4.BeautifulSoup(html)
result=[]
for i in bs.find_all(class_= 'b-list-links'):
    for j in i.find_all('a'):
        result.append(j.get('href'))
3) вывести список категорий - просто взять последнюю часть в url:
for value in result:
    print(value.split('/')[-2])

P.S. не забудьте сказать другу что вам помогли решить задачу ;)



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Отредактировано JOHN_16 (Фев. 18, 2015 23:22:17)

Офлайн

#5 Фев. 18, 2015 23:33:47

sourser
Зарегистрирован: 2015-02-16
Сообщения: 18
Репутация: +  0  -
Профиль  

Создание парсера

Спасибо огромное , буду разбираться)
но у меня пишет:
NameError: name ‘bs4’ is not defined

import requests
from bs4 import BeautifulSoup
response = requests.get('http://fs.to/video/films/group/film_genre/')
html = response.text
bs=bs4.BeautifulSoup(html)
result=[]
for i in bs.find_all(class_= 'b-list-links'):
    for j in i.find_all('a'):
        result.append(j.get('href'))
for value in result:
    print(value.split('/')[-2])

Офлайн

#6 Фев. 19, 2015 01:06:44

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Создание парсера

sourser
прошу прощения, это я опечатался:

bs=BeautifulSoup(html)



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Отредактировано JOHN_16 (Фев. 19, 2015 01:21:39)

Офлайн

#7 Фев. 19, 2015 10:06:59

sourser
Зарегистрирован: 2015-02-16
Сообщения: 18
Репутация: +  0  -
Профиль  

Создание парсера

JOHN_16
sourserпрошу прощения, это я опечатался:
Теперь пишет о том, что:
 File "C:\Python27\IT\bs.py", line 17, in <module>
    bs=bs.BeautifulSoup(html)
NameError: name 'bs' is not defined

Если на 16 строке ставил
bs = {}
то писало :
AttributeError: 'dict' object has no attribute 'BeautifulSoup'

Скажите пожалуйста в чем тут ошибка)

Офлайн

#8 Фев. 19, 2015 10:16:48

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Создание парсера

bs = bs4… а не bs = bs….



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#9 Фев. 19, 2015 11:38:20

sourser
Зарегистрирован: 2015-02-16
Сообщения: 18
Репутация: +  0  -
Профиль  

Создание парсера

ZerG
bs = bs4… а не bs = bs….
я не досмотрел)
там вообще не должно быть бс)

Офлайн

#10 Фев. 19, 2015 11:42:06

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Создание парсера

Это смотря каким именно методом реализуете



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version