python PlayWright爬虫 支持JS 类似selenium

类似selenium一样的工具来了

Playwright

pip install playwright
playwright install 
#执行以上命令完成安装

快捷使用教程

  • locator 可以点击 填充 迭代
  • query_selector 只能查询,且单元素
  • query_selector_all可以迭代
  • all()链式可以在locator后用于迭代
  • text_content 获得信息 get_attribute获得属性 inner_html获得HTML内容

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    # 启动浏览器
    browser = p.chromium.launch(headless=False)
    # 打开新页面
    page = browser.new_page()
    # 导航到网页
    page.goto('https://example.com')
    # 获取页面标题
    print(page.title())
    page.locator("#kkk").click()
    page.locator("#kk_input").fill("MXMX")
    page.locator("#text_value").get_attribute("src")
    page.locator("#text_value").text_content()


    # 获取所有匹配的元素 方法通常使用all()链式操作
    list_items = page.locator('ul#myList li').all()

    # 遍历元素并打印文本内容
    for item in list_items:
        print(item.text_content())
    
    # 获取所有匹配的元素 ,定位到父元素下的所有子列表项
    list_items = page.locator('ul#myList li') 
    # 使用 for 循环迭代子元素 必须使用nth 较为不方便
    for i in range(list_items.count()):
        # 获取每个子元素的文本内容
        text = list_items.nth(i).text_content()
        print(f'Item {i}: {text}')

    #使用query_selector 和query_selector_all两个方法重写了
    list_items = page.query_selector_all('ul#myList li')    
    # 遍历元素并打印文本内容
    for item in list_items:
        print(item.text_content())

    # 关闭浏览器
    browser.close()

关于UA和Cookie

cookies_data = [
    {
        'name': 'cookie_name',
        'value': 'cookie_value',
        'domain': 'example.com'
    },
    # 添加其他 Cookie 数据
]  
#UA在设置浏览器的时候创建
browser = playwright.chromium.launch(
        headless=False,
        user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36'
    )

#cookie设置
context = browser.new_context()
context.set_cookies(cookies_data)
page = browser.new_page()
# UA在后面也可以设置 ,header内信息可以统一设置通过 page.et_extra_http_headers()
其中的header输入需要传入的header值。

page.set_extra_http_headers(
        headers={
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
        }
    )

page.goto("https://www.baidu.com/")

截图(可以截图特定元素的截图,比selenium高级)

#截图整个页面
page.screenshot(path='example.png')


# 截取视窗的可见部分
page.screenshot(path='visible_part.png', full_page=False)


# 截取特定元素的截图
element = page.locator('selector')  # 替换为你想要截图的元素选择器
element.screenshot(path='element.png')

LLAMA_factory训练数据设置,需要CUDA

RT,需要CUDA 因为没有显卡,看来只能在网上训练 。

训练数据设置:
在data目录设置创建JSON文件:
如下的TEST.json

[
    {
      "instruction": "你是谁?",
      "input": "",
      "output": "我是Saya",
      "history": []
    },
    {
        "instruction": "Saya,真好听的名字,是谁给你取的?",
        "input": "",
        "output": "是一个很重要的人",
        "history": []
      }
  ]

需要修改data文件下的dataset_info.json文件。

{
  "train": {
    "file_name": "train.json",
    "formatting": "sharegpt",
    "columns": {
      "messages": "conversations",
      "images": "images"
    }
  },
  "test": {
    "file_name": "test.json",
    "formatting": "sharegpt",
    "columns": {
      "messages": "conversations"
    }
  }
}
#将TEST的训练数据加入

conda 安装及安装llama factory

mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm ~/miniconda3/miniconda.sh

source ~/miniconda3/bin/activate

conda init --all

查看所有conda

conda env list
conda info --envs
#二选一

激活conda环境

conda activate <环境名称>
#比如llama_factory
conda activate llama_factory

退出环境

conda deactivate

创建新环境 必须带PYTHON版本号

conda create -n <新环境名称> python=3.8

删除环境

conda env remove -n <环境名称>

更新环境

conda update --all

创建LLAMA FACTORY范例

conda create -n llama_factory python=3.10
conda activate llama_factory
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"

pip install llamafactory

wget https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/llama_factory/Qwen2-VL-History.zip
mv data rawdata && unzip Qwen2-VL-History.zip -d data
#下载Qwen2.0 数据集,并解压到data目录,可以下载不同的数据到data目录


USE_MODELSCOPE_HUB=1 llamafactory-cli webui
#设置为魔搭社区并启动webui

LLAMA Factory大模型微调 累计(1)

首先安装

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip uninstall -y accelerate vllm matplotlib
pip install llamafactory==0.9.0
llamafactory-cli version

#下载Qwen2.0 数据集,并解压到data目录
wget https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/llama_factory/Qwen2-VL-History.zip
mv data rawdata && unzip Qwen2-VL-History.zip -d data

预训练数据集中的是对话

然后启用webUI 并设置数据从魔搭社区下载(USE_MODELSCOPE_HUB=1 )

USE_MODELSCOPE_HUB=1 llamafactory-cli webui

进入WebUI后可以选择语言,模型名称,训练方法