鱼C论坛

 找回密码
 立即注册
查看: 1313|回复: 2

playwright程序才开始一点点,啥都还没做,就打开了将近30个进程,正常吗?

[复制链接]
发表于 2023-12-21 15:18:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
30.png
from playwright.sync_api import Playwright, sync_playwright, expect
import time
import re
import random
import datetime
import os
import json

if not os.path.isdir("con1"):                                       
    os.makedirs("con1")
p = sync_playwright().start()
browser = p.chromium.launch(headless=True)
# browser = p.chromium.launch(headless=False)
context = browser.new_context()

with open('./con1.json', 'r', encoding='utf-8') as fp_json:
        data_list = json.load(fp_json)
context.add_cookies(data_list)
page = context.new_page()       #page里放search出来的大页面
url = 'https://www.conv1.com/search.php?lg=en'
page.goto(url, timeout = 0)
expect(page.locator("#N_lg-button")).to_be_visible()
page.locator("#N_lg-button").click()

if page.locator("//ul[@id='N_lg-menu']/li[text()='English']").is_visible():
    page.locator("//ul[@id='N_lg-menu']/li[text()='English']").click()
if page.locator("#P_lg-button").is_visible():
    page.locator("#P_lg-button").click()
if page.locator("//ul[@id='P_lg-menu']/li[text()='Chinese (Mandarin)']").is_visible():
    page.locator("//ul[@id='P_lg-menu']/li[text()='Chinese (Mandarin)']").click()

if page.locator('#Country-button').is_visible():
    page.locator('#Country-button').click()

Country_list = ['Australia']
Country1 = random.choice(Country_list)
print(Country1)

if page.locator("//ul[@id='Country-menu']/li[text()='" + Country1 + "']").is_visible():
    page.locator("//ul[@id='Country-menu']/li[text()='" + Country1 + "']").click()

if page.locator("//label[@for='loginDate']/span[text()='Last login']").is_visible():
    page.locator("//label[@for='loginDate']/span[text()='Last login']").click()
    
if page.locator("//span[text()='Include Contacted']").is_visible():
    page.locator("//span[text()='Include Contacted']").click()

time.sleep(10)
if page.locator('//button[@id="sub"]/span/i').is_visible():
    page.locator('//button[@id="sub"]/span/i').click()

print('click search-----------------------')
time.sleep(3600)

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-21 15:18:58 | 显示全部楼层
根据你提供的代码,我看不出为什么会打开那么多进程。不过有一些可能的原因和解决方法可以尝试。

首先,`sync_playwright().start()`会启动一个浏览器实例,如果你的代码运行多次,就会创建多个浏览器进程。你可以尝试将这段代码放在循环外面,这样只会启动一个浏览器实例。

其次,你使用了Playwright的同步API,在调用某些方法时,可能会导致程序阻塞并且创建新的进程。你可以尝试使用异步API来避免这种情况。

另外,你在代码中使用了`time.sleep(3600)`,这会导致程序休眠一小时。如果你希望程序在一段时间后退出,请使用`time.sleep()`之后调用`browser.close()`来关闭浏览器实例。

最后,你还可以在代码中打印一些调试信息,比如每创建一个新的页面时打印一条消息,以帮助你找出到底是哪些操作导致了进程增多的情况。

以下是对你的代码做了一些修改和注释的示例:
from playwright.sync_api import sync_playwrightp = sync_playwright().start()browser = p.chromium.launch(headless=True)context = browser.new_context()# 将以下代码放在循环外面with context:    page = context.new_page()    url = 'https://www.conv1.com/search.php?lg=en'    page.goto(url, timeout=0)    # 其他代码...    # 调试信息    print('New page created!')    # 程序休眠1小时    time.sleep(3600)# 关闭浏览器实例browser.close()
希望以上解答能帮到你!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-22 17:34:22 | 显示全部楼层
如果程序没有报错的话是正常的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 19:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表