Задать вопрос
  • Как парсить через XMLHttpRequest?

    @4elentano551
    Javascript
    Ответ написан
    Комментировать
  • Как получить cookie если его нету?

    Lynn
    @Lynn
    nginx, js, css
    Никак. В этом и состоит смысл httpOnly куки
    Ответ написан
    4 комментария
  • Как получить только PHPSESSID?

    @AndryG
    $str = 'mail_info_10999781={"count":4,"lastPostId":"442384768","playerId":"1","playerName":"Система","text":"За участие в Ту..","dateAdded":1586381539,"countNew":"4"}; mail_info_4180878=[]; mail_info_2329300=[]; mail_info_10982672=[]; mail_info_10524789={"count":3,"lastPostId":"444114528","playerId":"1","playerName":"Система","text":"За участие в Ту..","dateAdded":1587504640,"countNew":"3"}; mail_info_9061283={"count":3,"lastPostId":"444114548","playerId":"1","playerName":"Система","text":"За участие в Ту..","dateAdded":1587504666,"countNew":"3"}; mail_info_4767868=[]; mail_info_2307930=[]; mail_info_3713915={"count":4,"lastPostId":"444115078","playerId":"1","playerName":"Система","text":"Вы покинули или..","dateAdded":1587505121,"countNew":"4"}; mail_info_11019215=[]; uidc=75e9f7984b904a; mail_info_7521919={"count":3,"lastPostId":"444119300","playerId":"1","playerName":"Система","text":"За участие в Ту..","dateAdded":1587509668,"countNew":"3"}; mail_info_5249555={"count":3,"lastPostId":"444119305","playerId":"1","playerName":"Система","text":"За участие в Ту..","dateAdded":1587509682,"countNew":"3"}; mail_info_9721044={"count":3,"lastPostId":"444119330","playerId":"1","playerName":"Система","text":"За участие в Ту..","dateAdded":1587509739,"countNew":"3"}; mail_info_9200661={"count":1,"lastPostId":"444119783","playerId":"10978816","playerName":"Букая","text":"Перса верните","dateAdded":1587511049,"countNew":"1"}; mail_info_3775637=[]; mail_info_10950336=[]; mail_info_2728587=[]; mail_info_10799719={"count":4,"lastPostId":"444145953","playerId":"1","playerName":"Система","text":"За участие в Ту..","dateAdded":1587543962,"countNew":"4"}; mail_info_3782473={"count":4,"lastPostId":"444146002","playerId":"1","playerName":"Система","text":"Вы покинули или..","dateAdded":1587543991,"countNew":"4"}; mail_info_8929282={"count":5,"lastPostId":"444146020","playerId":"1","playerName":"Система","text":"Вы покинули или..","dateAdded":1587544010,"countNew":"5"}; mail_info_6872423={"count":4,"lastPostId":"444146071","playerId":"1","playerName":"Система","text":"Вы покинули или..","dateAdded":1587544041,"countNew":"4"}; mail_info_10947584=[]; mail_info_5361529=[]; mail_info_11024570=[]; mail_info_10824306={"count":3,"lastPostId":"444149063","playerId":"1","playerName":"Система","text":"Вы покинули или..","dateAdded":1587546093,"countNew":"3"}; mail_info_9126714=[]; mail_info_9412550=[]; mail_info_8087106=[]; PHPSESSID=720e9a61f3ce5acf34e005ba0811a4e0.1587566959.5217338; mail_info_10209738=[]; lastSyncDate=1587568026488mrush.mobi';
    if(preg_match('/PHPSESSID=(.+?);/', $str, $matches)){
        echo $matches[1];
    }else{
        echo 'Oops';
    }
    Ответ написан
    4 комментария
  • Как парсить только ник?

    @SODINNER
    Предлагаю прост взять na.text и разделить по запятую, а дальше получить первый элемент списка. Проще варианта данный Сергеем, ибо нужно лишь дописать одну строку в ваш уже готовый код.
    nickname = na.text.split(',')[0]
    Единственное замечание, "JIунный V" это всё ник или ник + какой-то уровень? Если вам не нужно "V" и другие значения на этом месте, можно еще проще разделить по пробелу, функция split делает это автоматический, если не передавать значение:
    nickname = na.text.split()[0]
    Ответ написан
    Комментировать
  • Как парсить только ник?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    longNick = na.text.strip()
    nick = longNick[:longNick.find(',')]
    Ответ написан
    5 комментариев
  • Как поднять текст в угол?

    @Karpion
    Какой именно текст в какой угол?

    Надо заменить X<sup>2</sup> на X<SUB>2</SUB>

    Список справа - поставьте <td rowspan=2 VALIGN=bottom>

    Что ещё - пишите, пощупаем.
    И постарайтесь верстать HTML более регулярно. Например, чтобы все "td" были с одинаковым отступом - тогда видна вложенность тегов.
    Ответ написан
    Комментировать
  • Какой получить последний элемент?

    Если нужен только последний рейтинг, стоит ли заморачиваться построением и поиском в DOM-модели. Поиск медленный, при обработке больших по объему страниц память жрет немерено.
    Проще найти рейтинг "врукопашную"
    import requests
    . . .
    content = requests.get('адрес чего-то') 
    texthtm = content.text
    substr = '<td class="yell">'
    posb = texthtm.rfind(substr) + len(substr)
    pose = texthtm.find('</', posb)
    rating = int(texthtm[posb : pose])
    print(rating)
    Ответ написан
    Комментировать
  • Как получить оба элемента?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Уберите "{'name': 'PHPSESSID'}"
    find_all у вас выдаст список, обойдите его циклом и достаньте value у каждого
    Ответ написан
    2 комментария
  • Как получить class элемента и не получить блок IP?

    @FreeMate
    Попробуйте отправлять значения из hidden полей вместе с логином и паролем. Возможно в этом причина.
    Когда вы очистите историю, в форме появляется эти 2 поля
    Скриншот
    5e7e0a96b7756288423941.png

    Думаю это и есть проверка на бота. Интересно что когда заходишь во второй раз, этих полей уже нет
    Ответ написан
    4 комментария
  • Почему парсит только первые ники?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    1) Вы ищете таблицы с классом 'cntr wa mlra', а нужно таблицу.
    2) Уже в найденной таблице искать (как вариант) все теги 'a' с классом 'lwhite'
    table = soup.find('table', {"class": "cntr wa mlra"})
    names = table.find_all('a',class_='lwhite')
    for name in names:
    	nick = name.text
    	print(nick)

    3) Вы их уже задолбали, они поставили хитрую защиту от таких скриптов. Нужно делать задержки при отправке запросов.

    Насчет защиты - там теперь при авторизации нужно передавать еще один параметр(с пустым значением) с рамдомным именем. Но просто перед авторизацией сделать get запрос и вытащить данный параметр просто так не получится, там немного хитрее всё это сделано.

    Рабочий код(куки скопировал из браузера):
    import requests
    from bs4 import BeautifulSoup
    from lxml import html
    import time
    
    cookies = {'PHPSESSID':'c3a1cde86c8c8c9f0e3877403ad4935e.1585230344.54638591'}
    
    headers = {'user-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0'}
    
    for i in range(1,6):
      mrush = open('ParsNick.txt','a')
      html_text = requests.get(f"http://mrush.mobi/best?pvp=0&page={i}",cookies=cookies,headers=headers).text
    
      soup = BeautifulSoup(html_text, 'html.parser')
      table = soup.find('table', {"class": "cntr wa mlra"})
      names = table.find_all('a',class_='lwhite')
      for name in names:
        nick = name.text
        print(nick)
        mrush.write(nick+'\n')
      mrush.close()
      time.sleep(1)
    Ответ написан
    5 комментариев
  • Как парсить много страниц?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    Вы ищете все ссылки с классом block_zero, а с такими классами есть только div'ы:
    for i in range(1,100):
    	tiwar = open('tiwar.txt','a')
    	html_text = ses.get(f"http://tiwar.ru/rating/sumstat/{i}").text
    	soup = BeautifulSoup(html_text, 'html.parser')
    	names = soup.find_all('div',class_='block_zero')
    	for name in names[:-2]:
    		nick = name.a.text
    		print(nick)
    		tiwar.write(nick+'\n')
    	tiwar.close()
    Ответ написан
    Комментировать