Уведомления

Группа в Telegram: @pythonsu

#1 Июль 24, 2016 17:57:20

Snowman8526
Зарегистрирован: 2015-06-26
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

yandex cookies

Добрый день. Для собственного развития решил написать лёгкую поисковую машину. Задача задать вопрос скрипту он обратится к yandex и google запишет всё в БД и потом отдельно будет проводить анализ скаченного. У меня возникла проблема с Yandex

 import urllib.request
http='https://yandex.ru/search/?text='
one=input('введи запрос ')
one2=urllib.request.pathname2url(one)
URL=urllib.request.urlopen(http).read().decode('utf-8')

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

Проблема возникает после 2-го 3-го запроса Яндекс начинает писать

 <b>В вашем браузере отключены файлы cookies</b>. Яндекс не сможет запомнить вас и правильно идентифицировать в дальнейшем. 

В доках написана одна строчка что есть такая функция, но как она работает Я так и не разобрался.
Буду рад любой подсказке. Спасибо

Офлайн

#2 Июль 25, 2016 07:35:36

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

yandex cookies

как-то так, наверно

 import http.cookiejar
import urllib.request
URL = "https://yandex.ru/search/?text={}"
cookie = http.cookiejar.CookieJar(jar_file)
openers = [urllib.request.HTTPRedirectHandler(),
           urllib.request.HTTPHandler(debuglevel=0),
           urllib.request.HTTPSHandler(debuglevel=0),
           urllib.request.HTTPCookieProcessor(cookie)]
opener = urllib.request.build_opener(*openers)
query = input("введи запрос ")
html opener.open(URL.format(urllib.request.pathname2url(query))).read().decode("utf-8")
для таких целей рекомендую пакет requests



Отредактировано pyuser (Июль 25, 2016 07:35:57)

Офлайн

#3 Июль 25, 2016 11:22:47

Snowman8526
Зарегистрирован: 2015-06-26
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

yandex cookies

pyuser
  
import http.cookiejar
import urllib.request
URL = "https://yandex.ru/search/?text={}"
cookie = http.cookiejar.CookieJar(jar_file)
openers = [urllib.request.HTTPRedirectHandler(),
           urllib.request.HTTPHandler(debuglevel=0),
           urllib.request.HTTPSHandler(debuglevel=0),
           urllib.request.HTTPCookieProcessor(cookie)]
opener = urllib.request.build_opener(*openers)
query = input("введи запрос ")
html opener.open(URL.format(urllib.request.pathname2url(query))).read().decode("utf-8")

Для меня это пока магия так что не могу решать ошибки и проверить работоспособность.
Он говорит что jar_file переменная не определена. если её определить как “jar_file = 0” он выпадает с ошибкой.

 введи запрос python
Traceback (most recent call last):
  File "fulltext2.py", line 22, in <module>
    html = opener.open(URL.format(urllib.request.pathname2url(query))).read().decode("utf-8")
  File "/usr/lib/python3.5/urllib/request.py", line 464, in open
    req = meth(req)
  File "/usr/lib/python3.5/urllib/request.py", line 1311, in http_request
    self.cookiejar.add_cookie_header(request)
  File "/usr/lib/python3.5/http/cookiejar.py", line 1344, in add_cookie_header
    self._policy._now = self._now = int(time.time())
AttributeError: 'int' object has no attribute '_now'

Офлайн

#4 Июль 26, 2016 03:45:27

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

yandex cookies

Snowman8526
Он говорит что jar_file переменная не определена
Правильно говорит :), в данном случае ее не должно быть.
Вот рабочий код:
 import http.cookiejar
import urllib.request
URL = "https://yandex.ru/search/?text={}"
cookie = http.cookiejar.CookieJar()
openers = [urllib.request.HTTPRedirectHandler(),
           urllib.request.HTTPHandler(debuglevel=0),
           urllib.request.HTTPSHandler(debuglevel=0),
           urllib.request.HTTPCookieProcessor(cookie)]
opener = urllib.request.build_opener(*openers)
query = input("введи запрос ")
html = opener.open(URL.format(urllib.request.pathname2url(query))).read().decode("utf-8")
print(html)



Офлайн

#5 Июль 26, 2016 11:01:02

Snowman8526
Зарегистрирован: 2015-06-26
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

yandex cookies

pyuser
Вот рабочий код:
Спасибо большое за потраченное время. Всё работает.

Офлайн

#6 Сен. 20, 2016 04:53:49

marataziat
От: Алматы
Зарегистрирован: 2016-05-24
Сообщения: 104
Репутация: +  -5  -
Профиль   Отправить e-mail  

yandex cookies

Для такого лучше API поиска юзать!
P.S у Google есть API но про Яндекс не знаю



Я настоящий тюленялюб :)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version