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

june0620(70)
Published in
#cn
Words
444
Reading
2 min
Listen
Play
7y

今天学习python的list和set
从steemit收集帖子目录后点赞是学习目的。
当然实际上不会点赞,学习list和set才是目的。

从steemit获取帖子目录后转换list并循环这个list,如果list里有whitelist点赞。再一个list里若有nsfw(Not Safe For Work) 帖子就不点赞飘过。

这个场景应该足够我学习list。

那set怎么办呢? 理论上set这个孩子是不允许重复的目录的。
那在 nsfw 帖不点赞的脚本里再写一个脚本,就是把nsfw帖子作者名另存下。(#先保存起来#以后再看#哈哈)作者名不需要重复,正好用set保存作者名。

Scenario

  1. 访问steemit并登录
  2. 获取目录,当有white list帖子时点赞
  3. 发现 nsfw 贴就飘过并另存为set里

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: 从list搜索并删除该项,这样会减少list的大小,如果找不到就会发生错误警告
  • pop: 用索引搜索并删除还返回删除的值, 如果不输入索引就删除最后一项,如果找不到索引会抛出错误警告
  • append: 往list最后添加值
  • extend: 往list装入另一个list
  • insert: 也是添加值,但这个函数需要传索引和对象参数。索引是需要添加的位置,对象是需要添加的值

添加值到set时用add()函数,set还有update(), remove(), pop(), clear(), intersection(), union(), difference() 等函数。

Selenium:
如果找不到网页元素Selenium会抛出 NoSuchElementException 警告。

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

[Python #2] Learning Python with Selenium - List and Set [CN] | Ecency