[Python #2] Learning Python with Selenium - List and Set [KR]

in #kr5 years ago (edited)

오늘은 Python의 리스트와 집합을 사용해 본다.
steemit 에서 글을 찾아 보팅을 목적으로 구현을 해본다.
물론 보팅은 안한다. 리스트와 집합을 사용해 보는게 목적이니....
보팅은 나중에 하기로 하고 일단 공함수 하나 만들어 놓고 구현은 나중에 하기로 한다.

스팀에 등록된 글목록을 불러와 List로 저장 후 반복문을 사용하여 화이트 리스트이면 보팅하는 구조면 List를 충분히 익힐 것 같다. 추가로 nsfw(Not Safe For Work) 글이면 보팅을 안하고 넘어가게 구현하면 아주 좋을 것 같다.

그럼 집합은? 집합 개념상 중복을 허용하지 않는 리스트라고 하는데 흠.....

아 근데 nsfw 글일 경우 작가 이름을 집합에 따로 저장해 두는게 좋을 것 같다. (#므흣#나중에 봐야지#ㅎㅎ)
이름은 중복으로 저장할 필요 없으니 집합으로 하면 딱 일 것 같다. 해보자~~

Scenario

  1. 스팀잇 접속 밋 로그인
  2. 글 목록 불러온 후 화이트 리스트 사용자면 보팅
  3. 글 목록에 nsfw 글이 있으면 건너 뛰고 집합에 저장

Source

from selenium import webdriver
import time
from selenium.common.exceptions import NoSuchElementException

def vote():
    pass

def is_nsfw(parent_ele: object) -> bool:
    try:
        parent_ele.find_element_by_xpath('descendant::span[text()="nsfw"]')
        return True
    except NoSuchElementException as err:
        return False

# Set chromedriver
chrome = webdriver.Chrome('C:/Users/USER/Desktop/python/chromedriver/chromedriver.exe')
steemit = 'https://steemit.com'
# Set window maximum
chrome.maximize_window()
# chrome.implicitly_wait(2)
chrome.get(steemit)
# Call function 'login'
login()

chrome.get('https://steemit.com/trending/kr')
# chrome.get('https://steemit.com/trending/nsfw')
whiteList = ['jaydih']
nsfw_list = set()
posts_list = chrome.find_elements_by_xpath('//ul[contains(@class,"PostsList")]/li')
for post in posts_list:
    username = post.find_element_by_xpath('descendant::span[@class="author"]/strong').text
    if username in whiteList:
        print('white List: ' + username)
        vote()
    if is_nsfw(post):
        nsfw_list.add(username)
        continue
print("nsfw list: " + str(nsfw_list))
chrome.quit()

오늘의 내용 정리

Python:

List에는 아래와 같은 기능이 있다.

  • remove: 리스트에서 데이터값(인덱스 아님)을 찾아 제거하고, 크기를 1 줄인다. 값을 발견하지 못하면 인터프리터는 에러를 발생시킨다.
  • pop: 리스트에서 인덱스값을 기준으로 제거 후 그 값을 반환한다. 인덱스값을 지정하지 않으면 맨 마지막 객체를 삭제하고 반환한다. 인덱스값이 존재하지 않거나 리스트가 비어 있으면 에러를 발생시킨다.
  • append: 리스트 마지막에 객체를 추가한다. - extend: 또 다른 리스트를 인자로 받아 리스트의 모든 객체를 기존 리스트에 추가한다.
  • insert: 인덱스값과 객체를 인자로 받아 원하는 위치에 객체를 삽입한다. 맨 마지막에 삽입할 수 없고 이는 append로 가능하다.

집합에 추가할 때는 add()를 사용한다. 그 외 update(), remove(), pop(), clear(), intersection(), union(), difference() 등이 있다.

Selenium:
사이트에서 엘리멘트를 찾지 못할 경우 Selenium은 NoSuchElementException 을 발생시킨다.

Reference:
[Python #1] Learning Python with Selenium - Log in to steemit [KR]

Sort:  

这么快,你真好,谢谢
!shop

Posted using Partiko Android

🈶缘啊 刚上partiko就看到你呢🤭

Posted using Partiko Android

😀😄😆😁🤩😍

Posted using Partiko Android

Hi~ 萍萍!
@june0620 has gifted you 1 SHOP!

Currently you have: 71.001 SHOP

View or Exchange SHOP Please go to steem-engine.com.

Are you bored? Play Rock,Paper,Scissors game with me!

Thank you so much for participating in the Partiko Delegation Plan Round 1! We really appreciate your support! As part of the delegation benefits, we just gave you a 3.00% upvote! Together, let’s change the world!

nsfw 풀네임을 오늘에서야 알았습니다!

Posted using Partiko Android

한글로 후방주의(?)라고 하죠^^

Posted using Partiko Android

준님 실력이 늘수록 저는 점점 더 어려워 보이네요..ㅋ

저도 아직은 많이 어렵네용^^

Posted using Partiko Android

Coin Marketplace

STEEM 0.17
TRX 0.15
JST 0.028
BTC 58047.91
ETH 2348.61
USDT 1.00
SBD 2.37