Skip to content

Instantly share code, notes, and snippets.

@bestony

bestony/zhihu.py Secret

Created April 4, 2020 08:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bestony/dcca2f977ce5025f09b56e5fff124e98 to your computer and use it in GitHub Desktop.
Save bestony/dcca2f977ce5025f09b56e5fff124e98 to your computer and use it in GitHub Desktop.
知乎py
# 需要下载 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