爬取简书1


import os


from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.edge.service import Service
import time

import pandas as pd

from selenium.webdriver.common.action_chains import ActionChains









def get_aws():
    # 如果 WebDriver 的路径没有被添加到系统的 PATH 环境变量中,需要指定它的路径
    edge_driver_path = 'E:/sleep_lr/edgedriver_win64/msedgedriver.exe'
    service = Service(edge_driver_path)
    # # 创建 Edge 浏览器实例
    driver = webdriver.Edge(service=service)
    if not os.path.exists("cookies.pkl"):

        driver.get("https://www.jianshu.com/")
        input("ok")
        pd.to_pickle(driver.get_cookies(), "cookies.pkl")

    else:
        driver.get("https://www.jianshu.com/")
        driver.delete_all_cookies()
        for cookie in pd.read_pickle("cookies.pkl"):
            driver.add_cookie(cookie_dict=cookie)
    #
    # 打开一个网页
    data=pd.read_pickle("jian_fen.pkl")
    text_list=[]
    for name, strs, like, url, one_str_price, get_like_str in data.values:

        driver.get(url)
        info=driver.find_elements(By.XPATH,'//div[@class="info"]/ul')[0].text

        actions = ActionChains(driver)

        # 先悬浮再点击
        actions.move_to_element(driver.find_elements(By.XPATH, '//i[@class="iconfont ic-hot"]')[0]).click().perform()

        time.sleep(5)
        one=[o.text for o in driver.find_elements(By.XPATH,'//ul[@class="note-list"]/li')]

        text_list.append([info,one])
        print(one)
        pd.to_pickle(text_list, "jian_shu1.pkl")


if __name__ == '__main__':

    
    get_aws()
    

这段代码是一个使用 Python 语言编写的脚本,它使用了 Selenium 库来自动化操作网页浏览器,特别是 Microsoft Edge 浏览器。以下是代码的主要功能和步骤的解释:

  1. 引入所需的库:
    • os:用于与操作系统交互,例如检查文件是否存在。
    • selenium.webdriver.common.by.By:用于定位网页元素。
    • selenium.webdriver:包含WebDriver的接口。
    • selenium.webdriver.edge.service.Service:用于启动Edge浏览器服务。
    • time:用于暂停脚本执行,以便等待网页加载或操作完成。
    • pandas as pd:用于数据处理和分析,这里主要用于序列化(保存)和反序列化(加载)cookie。
    • selenium.webdriver.common.action_chains.ActionChains:用于模拟更复杂的用户操作,如鼠标悬停和点击。
  2. 定义 get_aws 函数:
    • 这个函数负责启动浏览器、管理cookies、访问简书网站,并抓取特定文章的热门评论。
  3. 设置 Edge WebDriver:
    • 定义 edge_driver_path 变量为 Edge WebDriver 的可执行文件路径。
    • 创建一个 Service 对象,将 WebDriver 的路径传递给它。
    • 创建一个 webdriver.Edge 实例,用于控制浏览器。
  4. 管理 Cookies:
    • 检查是否存在一个名为 “cookies.pkl” 的文件。如果不存在,则访问简书网站,并在用户登录后手动保存 cookies(通过 input("ok") 暂停执行)。
    • 如果 “cookies.pkl” 文件存在,则加载 cookies,以便在浏览器中保持登录状态。
  5. 访问简书文章页面并抓取数据:
    • 从 “jian_fen.pkl” 文件中读取包含文章信息的 DataFrame。
    • 遍历 DataFrame 中的每一行,获取文章的 URL,并访问这些 URL。
    • 在每个文章页面上,抓取文章信息(如阅读量、评论数等)和热门评论。
  6. 执行鼠标悬停和点击操作:
    • 使用 ActionChains 对象模拟用户将鼠标悬停在热门评论图标上,并点击它以展开评论列表。
  7. 等待并抓取评论:
    • 等待5秒钟以允许评论加载。
    • 抓取评论列表中的文本。
    • 将抓取的信息保存到 text_list 中,并将这个列表序列化到 “jian_shu1.pkl” 文件中。
  8. 主程序入口:
    • 当该脚本作为主程序运行时,调用 get_aws() 函数。
      请注意,代码中有几个地方需要手动干预(例如,登录简书网站并保存 cookies),并且它依赖于外部文件(“cookies.pkl” 和 “jian_fen.pkl”)的存在。
      此外,该脚本可能存在一些问题,例如缺少异常处理,以及硬编码的等待时间(time.sleep(5)),这可能会导致脚本不稳定或效率低下。在使用此脚本之前,需要确保所有外部依赖项都正确设置,并且脚本在运行环境中经过充分测试。

猜你喜欢

转载自blog.csdn.net/weixin_32759777/article/details/143080802