Python - итерация нецелых элементов в списке для цикла - PullRequest
0 голосов
/ 04 мая 2018

Я делаю проект, который включает в себя очистку веб-страниц на Python. Я использую библиотеки BeautifulSoup и Selenium. В какой-то момент в моем сценарии я собираю все теги URL с текстом ссылок.

link_click = driver.find_elements_by_link_text(
    'Fall/Winter 2017-2018 Course Schedule')

Затем я считаю, сколько ссылок на самом деле есть в списке, который я создал.

len(link_click)

Ниже приведена функция, которую мне нужно будет запустить позже.

def get_course_info():
    url = driver.current_url
    response = requests.get(url, headers = headers)
    soup = BeautifulSoup(response.content, 'html.parser')
    course = soup.find_all('p')
    course_code = print(course[0].text[3:][:9])
    course_cat = print(course[0].text[3:][:4])
    course_name = print(course[0].text[22:])
    course_desc = print(course[3].text)
    results = soup.findAll("td", {"valign": "TOP","width" : "15%"})[1::2]
    list_of_inner_text = [x.text for x in results]
    final = list(set(list_of_inner_text))
    instructors = ', '.join(final)
    print(instructors)

Я использую этот блок кода для выполнения того, что мне нужно сделать со ссылками.

course_select = link_click[1].click();
get_course_info()

Мой вопрос заключается в том, что в настоящее время я передаю 1 из индекса link_click в функцию. Я хотел бы пройтись по нему, чтобы все 33 ссылки могли быть переданы в функции course_select и get_course_info.

1 Ответ

0 голосов
/ 04 мая 2018

Если это просто цикл, который вы пытаетесь достичь, вот он:

links = driver.find_elements_by_link_text('Fall/Winter 2017-2018 Course Schedule')

if len(links) >= 1:
    for link in links:
        link.click()
        time.sleep(2) #wait for page load
        get_course_info()
else:
    print ("No links found")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...