看看如何用 python 爬取知乎的公开收藏夹
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、成都网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的尼玛网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
下好库和驱动后,开始写一下,发现在用 selenium 操作浏览器打开知乎,输入密码登录时会出现 错误,一个博客上写是因为 js 判断识别出来这是机器在操作,网上有一些解决方法,这里选取了用浏览器 debug 模式,新建了一个用户文件夹,每次打开浏览器直接控制这个新的浏览器。
chrome.exe --remote-debugging-port=9222 --user-data-dir="E:\data_info\selenium_data
。chrome. exe 就是对于浏览器的 exe 文件 (edge 就是 msedge. exe) , 9222 自己选一个端口号等下在代码中要写一下,最后那个是生成的新的用户目录自己写一个。from requests import options
from selenium import webdriver # 用来驱动浏览器的
import time
import selenium
from selenium.webdriver.edge.options import Options
from selenium.webdriver.edge.service import Service
from selenium.webdriver.common.by import By
import os
os.startfile("C:\\Users\\Administrator\\Desktop\\Microsoft Edge (1).lnk") # 打开设置好的浏览器快捷方式
options = Options() # 得到edge的设置
options.add_experimental_option("debuggerAddress", "127.0.0.1:6001") # 配置浏览器的端口地址
#options.add_experimental_option('excudeSwitches',['enable-automation'])
driver=webdriver.Edge(service =Service("D:\\BaiduNetdiskWorkspace\\Lite Code\\python脚本\\firefox_selenium\\msedgedriver.exe"),options=options) # 浏览器驱动的放置地址
time.sleep(3)
write = ""
def get_all_folder(url):
driver.get(url)
time.sleep(2)
href=[]
title = driver.find_elements(By.XPATH,'(//a[@class="SelfCollectionItem-title"])')
for ind,i in enumerate(title):
href.append(title[ind].get_attribute('href'))
return href
def pythonpazhihu(url,write):
driver.get(url)
time.sleep(3)
#h2 = driver.find_elements(By.CLASS_NAME,"ContentItem-title")
title = driver.find_elements(By.XPATH,'(//h2[@class="ContentItem-title"]//a)')
h3 = driver.find_elements(By.XPATH,'(//h2[@class="ContentItem-title"]//a[@href])')
for ind,i in enumerate(h3):
content = str(title[ind].text)+" , "+str(h3[ind].get_attribute('href'))
write=write+content+"\n"
print(title[ind].text,h3[ind].get_attribute('href'))
#print(h3.text)
time.sleep(2)
return write
try:
url_all1 = "https://www.zhihu.com/collections/mine?page=1" # 总收藏也有两页,得到这两页每个收藏夹的具体链接
url_all2 = "https://www.zhihu.com/collections/mine?page=2"
href1 = get_all_folder(url_all1)
href2 = get_all_folder(url_all2)
href2 = href1+href2
#print(href2)
for url_son in href2:
for i in range(5):
#url = 'https://www.zhihu.com/collection/xx?page=%s'%(i+1)
url = url_son+'?page=%s'%(i+1) # 对每个收藏夹链接进行5页的循环
write = pythonpazhihu(url,write) # 把读到的标题和链接写到write变量中
finally:
driver.close()
with open("./zhihu.txt","w",encoding="utf-8") as fp:
fp.write(write)