Найти - Пользователи
Полная версия: yandex cookies
Начало » Network » yandex cookies
1
Snowman8526
Добрый день. Для собственного развития решил написать лёгкую поисковую машину. Задача задать вопрос скрипту он обратится к 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>. Яндекс не сможет запомнить вас и правильно идентифицировать в дальнейшем. 

В доках написана одна строчка что есть такая функция, но как она работает Я так и не разобрался.
Буду рад любой подсказке. Спасибо
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")
для таких целей рекомендую пакет requests
Snowman8526
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'
pyuser
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)
Snowman8526
pyuser
Вот рабочий код:
Спасибо большое за потраченное время. Всё работает.
marataziat
Для такого лучше API поиска юзать!
P.S у Google есть API но про Яндекс не знаю
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