• Как работать с xpath в lxml Python?

    @sergnosov1
    Вывод будет пустая строка т.к. содержимое подгружается спомощью jquery
    import lxml.html as lh
    
    page = lh.parse('http://myip.ru')
    my_div = page.xpath(".//title")[0].text_content().encode('utf-8')
    print my_div
    # Ваш IP-адрес. Узнать IP адрес, определить IP-адрес, определить свой IP
    div_name = 'ipcontent'
    my_div = page.xpath(".//div[@id=%s]" %div_name)
    print my_div
    # []

    чтобы получить результат работы jquery нужно использовать Selenium
    Ответ написан
    1 комментарий
  • Как работать с xpath в lxml Python?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    вот такое, с номерами
    div[1] tr[2]
    плохая практика, нужно уметь без них
    это во вторых

    а во первых, где ты в коде view-source:myip.ru DOM дерево нашел?
    там же сплошной JS
    Ответ написан
    7 комментариев
  • Ошибка IndexError: list index out of range discord.py?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    /html/body[@id='gsr']/div[@id='main']...
    - что вы там курите?
    Для погоды есть специальная библиотека - pyowm
    Если хочется парсить google, то разделите код на функции. Сделайте отдельную функцию для парсинга, и из неё возвращаете данные. Проще отладить функцию, чем весь код проекта.

    Вот пример(не утверждаю что правильно, но работает):
    def getWeather(city_):
    	response = requests.get(f'https://www.google.com/search?q=Погода {city_}',headers=headers)
    	soup = BeautifulSoup(response.text,"html.parser")
    	city = soup.select_one('#wob_loc').text.split(',')[0] # город
    	current_temp = soup.select_one('#wob_tm').text # температурв
    	cloudiness = soup.select_one('#wob_dc').text #"облачность"
    	chanceOfPrecipitation = soup.select_one('#wob_pp').text # вероятность осадков
    	humidity = soup.select_one('#wob_hm').text # влажность
    	wind = soup.select_one('#wob_ws').text # ветер
    
    	weather = {	'city':city,
    				'current_temp':current_temp,
    				'cloudiness':cloudiness,
    				'chanceOfPrecipitation':chanceOfPrecipitation,
    				'humidity':humidity,
    				'wind':wind
    				}
    	return weather

    Далее вызов функции:
    weather = getWeather('киев')
    
    print(f'''
    Город: {weather['city']}
    Температура: {weather['current_temp']}
    Облачность: {weather['cloudiness']}
    Вероятность осадков: {weather['chanceOfPrecipitation']}
    Влажность: {weather['humidity']}
    Ветер: {weather['wind']}
    	''')

    Вывод в консоль:
    Город: Київ
    Температура: 12
    Облачность: Мінлива хмарність
    Вероятность осадков: 0%
    Влажность: 39%
    Ветер: 24 км/год

    PS: В коде нет никаких проверок!
    Ответ написан
    1 комментарий
  • Некорректно работает Instantiate, в чем может быть проблема?

    DanielMcRon
    @DanielMcRon
    C# && Unity
    У меня все получилось, не знаю что там у вас. Положение в х осях меняется. А в y - нет, так как захватывается переменная с прошлого вызова. Но это можно решить путём пересчёта числа в методе Start и передаче как параметра в метод CalculatePosition
    Ответ написан
    Комментировать
  • Не работает OnTriggerEnter2D. В чем может быть проблема?

    @kyryliukbogdan
    попробуйте через if (other.gameObject.CompareTag("cloud"))
    Ответ написан
    Комментировать
  • Не работает OnTriggerEnter2D. В чем может быть проблема?

    DanielMcRon
    @DanielMcRon
    C# && Unity
    Одно из тел должно быть не тригеррным

    И да учитесь ещё писать красивый код, всё таки мы его рассматриваем
    Вот как он должен выглядеть, имена переменных не менял так как сложно понять за что они отвечают, так же само и имена методов сделал на глаз
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class clouds_script : MonoBehaviour
    {
        private float minus = 15;
        private float positionY = 0;
        private float minus_minus = 0;
        
        private void Start() {
            CalculateSpawnPosition();
        }
    
        
        private void Update() {
            CalculateTimeAndPosition();
        }
    
        private void OnTriggerEnter2D(Collider2D other) {
            if (other.tag == "cloud") {
                Restart();
                Debug.Log("triggered");
            }
        }
    
        private void Restart() {
            CalculateSpawnPosition();
            CalculateTimeAndPosition();
        }
    
        private void CalculateTimeAndPosition() {
            minus = minus - minus_minus * Time.deltaTime;
            transform.position = new Vector3(minus, positionY, 0);
        }
    
        private void CalculateSpawnPosition() {
            transform.position = new Vector3(Random.Range(13, 20), Random.Range(2, 5), 0);
            minus = transform.position.x;
            positionY = transform.position.y;
            minus_minus = Random.Range(1, 3);
        }
    }
    Ответ написан
    Комментировать