-
-
Save bestony/dcca2f977ce5025f09b56e5fff124e98 to your computer and use it in GitHub Desktop.
知乎py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 需要下载 loguru 和 selenium | |
import random | |
from time import sleep | |
from loguru import logger | |
from selenium import webdriver | |
def get_cookie(): | |
""":arg | |
60s,足够手动登录了 | |
""" | |
print("===手动登录,获取cookie===") | |
browser.get('https://www.zhihu.com/') | |
sleep(60) | |
print(browser.get_cookies()) | |
def report_it(user_url): | |
""":arg | |
user_url :想要投诉的用户的链接 | |
点击 report | |
""" | |
browser.get(user_url) | |
sleep(5) | |
# 点击 report | |
browser.find_element_by_xpath("//div[@class='Profile-footerOperations']/button[@class='Button Button--plain'][2]").click() | |
sleep(6) | |
# 点击个人信息不符合规范 | |
browser.find_element_by_xpath("//button[@class='ReportMenu-item'][3]/span").click() | |
sleep(6) | |
# 填写说明 | |
browser.find_element_by_xpath("//textarea[@class='Input']").send_keys("用户名不符合知乎官方规范") | |
sleep(6) | |
# 点击report | |
browser.find_element_by_xpath("//button[@class='Button ReportMenu-button Button--primary Button--blue']").click() | |
sleep(6) | |
logger.info("投诉成功~~") | |
def get_name(name): | |
""":arg | |
name :想要投诉的名称,精准匹配名称,大小写可以不同 | |
获取用户名称和用户链接 | |
""" | |
url = f'https://www.zhihu.com/search?q={name}&type=people' | |
browser.get(url) | |
sleep(5) | |
# 打开新窗口 | |
js = 'window.open("");' | |
browser.execute_script(js) | |
# 跳到原来的窗口,第一个窗口 | |
page_num = browser.window_handles | |
browser.switch_to.window(page_num[0]) | |
sleep(5) | |
for ii in range(0, 5): | |
# 下拉加载,js | |
browser.execute_script('window.scrollTo(0, document.body.scrollHeight)') | |
sleep(random.randint(5, 9)) | |
users = browser.find_elements_by_xpath("//div[@class='Popover']/div/a[@data-za-detail-view-id]") | |
for i in range(1, len(users)): | |
# 跳过第一个 | |
u_name = users[i].text.strip() | |
u_link = users[i].get_attribute('href') | |
print(u_name, u_link) | |
if u_name.upper() == name.upper(): | |
# 跳到打开的第二个窗口 | |
page_num = browser.window_handles | |
browser.switch_to.window(page_num[1]) | |
sleep(5) # 时间可以微调 | |
report_it(u_link) | |
sleep(5) # 时间可以微调 | |
# 跳转回第一个窗口 | |
browser.switch_to.window(page_num[0]) | |
sleep(1) | |
sleep(random.randint(8, 15)) | |
print("============") | |
if __name__ == '__main__': | |
# 因为个人原因,所以举报在这里是投诉 | |
options = webdriver.ChromeOptions() | |
# options.add_argument("--incognito") # 隐身模式打开,可以注释掉 | |
options.add_experimental_option('excludeSwitches', ['enable-automation']) | |
driver_path = "./chromedriver" # chromedriver 的路径 | |
browser = webdriver.Chrome(executable_path=driver_path, chrome_options=options) | |
# 登录获取cookie,手动登录,因为懒得加自动登录 | |
get_cookie() | |
browser.get("https://www.zhihu.com/") | |
# 投诉的名称,商场化妆品品牌、车(奥迪、宝马)、vivo、oppo、iphone、Amazon、ibm、迪士尼 | |
report_name = "奔驰" | |
get_name(report_name) | |
print('====搞定收工=====') | |
browser.quit() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment