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

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

Alex_HH
Ну если не надо привязываться к бьэтифулсоупу и реквесту, то вот ваша задач решена с помощью библиотеки для парсинга граб.
from grab import Grab
g = Grab()
g.go("http://fs.to/video/films/group/film_genre/")
print(g.doc.select('//div[@class="main"]').text())
sourser
спасибо)
Мне нужно только request & beautifulsoap
JOHN_16
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. не забудьте сказать другу что вам помогли решить задачу ;)
sourser
Спасибо огромное , буду разбираться)
но у меня пишет:
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])
JOHN_16
sourser
прошу прощения, это я опечатался:
bs=BeautifulSoup(html)
sourser
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'

Скажите пожалуйста в чем тут ошибка)
ZerG
bs = bs4… а не bs = bs….
sourser
ZerG
bs = bs4… а не bs = bs….
я не досмотрел)
там вообще не должно быть бс)
ZerG
Это смотря каким именно методом реализуете
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB