Как изменить контроль исполнения в Python, Selenium - PullRequest
1 голос
/ 22 января 2020

У меня проблема с Python потоком управления. Ниже приведен сценарий, в котором я пытаюсь получить некоторые данные с веб-страницы с использованием селена.

Вот пример части кода, который я использую Я беру список URL-адресов из базы данных. Таким образом, для каждого URL-адреса будет открыт браузер chrome (тот же браузер), который выполнит поиск URL-страницы, которая была передана.

Если на странице URL ничего нет или нет подробностей, ie when variable " длина "равна нулю, я изменил значение URL, добавив в него" продать "и теперь я хочу прервать выполнение программы и передать этот новый URL" browser.get (url) "здесь, не принимая следующий элемент из для l oop.

for row in urls:
    url=str(row)

    browser.get(url)

    names = browser.find_elements_by_xpath("//span[@class='pymv4e']")
    product = [x.text for x in names]
    filtered = [x for x in product if len(x.strip()) > 0]
    length=(len(filtered))

    if length ==0 :
        url=url+ '+sell'

1 Ответ

2 голосов
/ 22 января 2020

Проще говоря: извлеките соответствующую часть кода в выделенную функцию и повторно вызовите эту функцию:

def get_products(url):
    browser.get(url)
    names = browser.find_elements_by_xpath("//span[@class='pymv4e']")
    # simplified the filtering
    # note that python objects have a "truth" value, 
    # and that empty strings and empty lists have a False value
    product = [x.text for x in names if x.text.strip()]


for row in urls:
    url = str(row) # XXX why do you need this ???
    products = get_products(url)
    if not products:
        url += '+sell'
        products = get_products(url)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...