Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 9, 2015 03:37:52

backdoor
От: Екатеринбург
Зарегистрирован: 2015-07-28
Сообщения: 9
Репутация: +  0  -
Профиль   Адрес электронной почты  

Проблема с while

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
#__author__ = 'ilya khramtsov'
import re
from requests import get
###
while_search = re.compile(r'var betNumber=([0-9]+)')
########
guessLow = re.compile(r'var guessLow=([0-9]+)')
guessHigh = re.compile(r'var guessHigh=([0-9]+)')
betNumber = re.compile(r'var betNumber=([0-9]+)')
betResult = re.compile(r'var betResult=\[([0-9]+)')
payIn = re.compile(r'payIn=\[\-([0-9]+)')
payOut = re.compile(r'payIn=\[\-([0-9]+)')
########
f = open('list', 'r')
i = 23215483089
http_proxy = (f.readlines())
for line in http_proxy:
    proxies = ({'http': 'http://'+str(line).replace('\n', '')})
    while i <= 23215483092:
        f_result = open('result.txt', 'a')
        ff = get('https://www.999dice.com/Bets/?b='+str(i), proxies=proxies)
        findall2 = re.findall(while_search, str(ff.text))
        result0 = re.findall(betNumber, str(ff.text))
        result1 = re.findall(betResult, str(ff.text))
        result2 = re.findall(guessLow, str(ff.text))
        result3 = re.findall(guessHigh, str(ff.text))
        result4 = re.findall(payIn, str(ff.text))
        result5 = re.findall(payOut, str(ff.text))
        f_result.write(str(result0)+':'+str(result1)+':'+str(result2)+':'+str(result3)+':'+str(result4)+':'+str(result5)+'\n')
        i += 1

Вывод результата такой.
['0']:['545597']:['9500']:['959499']:['1000000']:['1000000']
[]:[]:[]:[]:[]:[]
[]:[]:[]:[]:[]:[]


То есть он отработал 1 раз,а потом нечего не обрабатывает. Если это же запускать в режиме отладки в pycharm то все нормально работает.



«Шо-то сделали мы сложное, хотя задача-то была вменяемая!»

Отредактировано backdoor (Авг. 9, 2015 03:38:18)

Офлайн

#2 Авг. 9, 2015 04:39:18

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Проблема с while

1)

payIn = re.compile(r'payIn=\[\-([0-9]+)')
payOut = re.compile(r'payIn=\[\-([0-9]+)')
регулярки одинаковы
2)
from requests import get
ff = get('https://www.999dice.com/Bets/?b='+str(i), proxies=proxies)
ох как потом можно потеряться с этим get…
так намного лучше
import requests
requests.get(...)
3)
f = open('list', 'r')
используйте или with или нужно закрывать файл
4)
proxies = ({'http': 'http://'+str(line).replace('\n', '')})
readlines разбивает по знаку переноса, поэтому его там никак не может быть
а в подобных случаях лучше использовать strip
5)
f_result = open('result.txt', 'a')
зачем же пытатся открывать при каждом шаге файл на дописывания??
6) используйте форматирование строк
7)
http_proxy = (f.readlines())
скобки не нужны
backdoor
То есть он отработал 1 раз,а потом нечего не обрабатывает.
проблема не с while! в выводе то три строки, как и должно быть, а вот то что в строках ничего нету нужно смотреть. скорее всего findall ничего не возвращает. смотрите в цикле ff.text и все станет понятно, что нету того что вы хотите найти
ну или же покажите нам
...
for line in http_proxy:
    proxies = ({'http': 'http://'+str(line).replace('\n', '')})
    while i <= 23215483092:
        f_result = open('result.txt', 'a')
        ff = get('https://www.999dice.com/Bets/?b='+str(i), proxies=proxies)
        print(ff.text)
        findall2 = re.findall(while_search, str(ff.text))
        result0 = re.findall(betNumber, str(ff.text))
        result1 = re.findall(betResult, str(ff.text))
        result2 = re.findall(guessLow, str(ff.text))
        result3 = re.findall(guessHigh, str(ff.text))
        result4 = re.findall(payIn, str(ff.text))
        result5 = re.findall(payOut, str(ff.text))
        f_result.write(str(result0)+':'+str(result1)+':'+str(result2)+':'+str(result3)+':'+str(result4)+':'+str(result5)+'\n')
        i += 1



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Авг. 9, 2015 04:41:16)

Офлайн

#3 Авг. 9, 2015 06:03:12

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Проблема с while

terabayt
1)
2)
3)
4)
5)
6)
7)
Тут, походу, проще весь этот быдлокод стереть и написать всё заново, чем по пунктам разжёвывать каждую шпуньку.
Один вывод в файл в виде списков приведённых к str() чего только стоит.

backdoor
while i <= 23215483092:
Ахахах, это while True что ли? :)



Отредактировано py.user.next (Авг. 9, 2015 15:48:40)

Офлайн

#4 Авг. 9, 2015 15:42:24

backdoor
От: Екатеринбург
Зарегистрирован: 2015-07-28
Сообщения: 9
Репутация: +  0  -
Профиль   Адрес электронной почты  

Проблема с while

terabayt
1)
Нашел в отладке ошибку после первого прохода,
{("unclosed <ssl.SSLSocket fd=8, family=AddressFamily.AF_INET, type=SocketType.SOCK_STREAM, proto=6, laddr=('192.168.0.227', 54810), raddr=('46.28.204.10', 443)>", <class 'ResourceWarning'>, 25): True}



«Шо-то сделали мы сложное, хотя задача-то была вменяемая!»

Офлайн

#5 Авг. 9, 2015 15:59:45

ayb
Зарегистрирован: 2014-04-01
Сообщения: 297
Репутация: +  24  -
Профиль   Отправить e-mail  

Проблема с while

Я даже не представляю что-это такое, но там есть API. Если несколько раз обновлять страницу - то приходит ответ “Вы слишком часто запрашиваете обновление страниц. Подождите несколько минут и повторите попытку.”

Офлайн

#6 Авг. 9, 2015 16:07:29

backdoor
От: Екатеринбург
Зарегистрирован: 2015-07-28
Сообщения: 9
Репутация: +  0  -
Профиль   Адрес электронной почты  

Проблема с while

ayb
Я даже не представляю что-это такое, но там есть API. Если несколько раз обновлять страницу - то приходит ответ “Вы слишком часто запрашиваете обновление страниц. Подождите несколько минут и повторите попытку.”
по этому и прокси)



«Шо-то сделали мы сложное, хотя задача-то была вменяемая!»

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version