Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 21, 2016 16:05:37

i0i8
Зарегистрирован: 2016-12-21
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

lxml requests

Добрый день! Недавно начал изучать Python, прошу строго не судить. Суть проблемы такая, пишу парсер google, таким образом что бы он подставлял ключевые слова в запрос , затем полученный ответ записывал в текстовый файл с ( сылка, титул, краткое описание). Ссылки я смог получить, но возникла проблема с титлом и кратким описанием ссылок.

 import requests
from lxml.html import fromstring
GOOGLE_SERCHE = 'https://www.google.ru/search?q={}' 
KYE = 'python'
ITEM_PARS = '.r' #r ссылки
def main():
    write_info(get_pages())
def get_pages():
    r = requests.get(GOOGLE_SERCHE.format(KYE))
    ref = fromstring(r.text)
    for e in ref.cssselect(ITEM_PARS):
        a = e.cssselect('a')[0]
        href = a.get('href').lstrip('\/url?q=').split('&',1)[0]
    return(href)
def write_info(serche):
    f = open("resut.txt","w")
    f.write(serche)
    f.close 
if __name__ == '__main__':
    main()
В гугле краткое описание в <span>, но не могу его вытащить… Пробовал так же xpath`ом , не получилось. Посоветуйте пожалуйста как развить дальше парсер. Спасибо за помощ

Офлайн

#2 Дек. 22, 2016 15:36:18

python335
Зарегистрирован: 2016-10-19
Сообщения: 88
Репутация: +  -8  -
Профиль   Отправить e-mail  

lxml requests

Ошибка!
Ты в main() вызываешь write_info и get_pages, а нельзя! Выучи ООП и поймешь что для вызова функции, команда которая ее вызывает должна стоять после обьявления функции:

 import requests
from lxml.html import fromstring
GOOGLE_SERCHE = 'https://www.google.ru/search?q={}' 
KYE = 'python'
ITEM_PARS = '.r' #r ссылки
def write_info(serche):
    f = open("resut.txt","w")
    f.write(serche)
    f.close
def get_pages():
    r = requests.get(GOOGLE_SERCHE.format(KYE))
    ref = fromstring(r.text)
    for e in ref.cssselect(ITEM_PARS):
        a = e.cssselect('a')[0]
        href = a.get('href').lstrip('\/url?q=').split('&',1)[0]
    return(href)
def main():
    write_info(get_pages())
if __name__ == '__main__':
    main()

Офлайн

#3 Дек. 23, 2016 10:15:34

i0i8
Зарегистрирован: 2016-12-21
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

lxml requests

python335
Ошибка!Ты в main() вызываешь write_info и get_pages, а нельзя! Выучи ООП и поймешь что для вызова функции, команда которая ее вызывает должна стоять после обьявления функции:
Эм, спасибо за внимание к теме, но вопрос был - как вытащить данные из тега <span>, href я нормально и так вытаскиваю и без перестановки функций местами.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version