[Python #2] Learning Python with Selenium - List and Set [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
- 访问steemit并登录
- 获取目录,当有white list帖子时点赞
- 发现 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]