鱼C论坛

 找回密码
 立即注册
查看: 2190|回复: 10

[已解决]playwright的inner-text遇到script 就退出了,怎么解决呢?

[复制链接]
发表于 2023-3-10 10:54:05 | 显示全部楼层 |阅读模式

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

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

x
playwright的page.inner-text遇到script 就退出了,怎么解决呢? 难道只能用正则解析吗?

inner_text.jpg
最佳答案
2023-3-10 14:44:03

那个不是因为遇到 script 才结束的,而是没有完全加载出来,

你等待一下就好

修改代码:
import sys
import os


from playwright.sync_api import sync_playwright
from playwright.sync_api import expect
import time
import datetime


link_zaojv = 'https://zaojv.com/'

with sync_playwright() as p:
    #browser = p.chromium.launch(headless=False)
    browser = p.chromium.launch(headless=True)
    context = browser.new_context()


    #page.set_viewport_size({"width": 1920, "height": 1080})
    page1 = context.new_page()
    

    page1.goto(link_zaojv, timeout=0)
    story_title = '打草惊蛇'
    page1.locator('//html/body/div/div[1]/table/tbody/tr/td[2]/form/input[5]').fill(story_title)
    page1.locator('//html/body/div/div[1]/table/tbody/tr/td[2]/form/input[6]').click()
    #print(page1.content())
    example_raw = page1.content()

    time.sleep(0.2)                   # 等待一下
    story_title_example = page1.inner_text('//*[@id="student"]')
    
    print(story_title_example)




    page1.close()
    context.close()
    browser.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-10 12:18:21 | 显示全部楼层
遇到script 就退出是啥意思?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-10 13:44:02 | 显示全部楼层
isdkz 发表于 2023-3-10 12:18
遇到script 就退出是啥意思?


按上图,正常应该从1取到7,取到7个句子。  但碰到右图的 <script> 标签后,只取到了句子1-5,然后取到了script内的字符内容后,就结束了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-10 13:58:58 | 显示全部楼层
blackantt 发表于 2023-3-10 13:44
按上图,正常应该从1取到7,取到7个句子。  但碰到右图的  标签后,只取到了句子1-5,然后取到了script ...

方便把相关代码放出来吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-10 14:06:25 | 显示全部楼层
本帖最后由 blackantt 于 2023-3-10 14:07 编辑
isdkz 发表于 2023-3-10 13:58
方便把相关代码放出来吗?

import sys
import os


from playwright.sync_api import sync_playwright
from playwright.sync_api import expect
import time
import datetime


link_zaojv = 'https://zaojv.com/'

with sync_playwright() as p:
    #browser = p.chromium.launch(headless=False)
    browser = p.chromium.launch(headless=True)
    context = browser.new_context()


    #page.set_viewport_size({"width": 1920, "height": 1080})
    page1 = context.new_page()
    

    page1.goto(link_zaojv, timeout=0)
    story_title = '打草惊蛇'
    page1.locator('//html/body/div/div[1]/table/tbody/tr/td[2]/form/input[5]').fill(story_title)
    page1.locator('//html/body/div/div[1]/table/tbody/tr/td[2]/form/input[6]').click()
    #print(page1.content())
    example_raw = page1.content()


    story_title_example = page1.inner_text('//*[@id="student"]')
    
    print(story_title_example)




    page1.close()
    context.close()
    browser.close()


er.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-10 14:44:03 | 显示全部楼层    本楼为最佳答案   

那个不是因为遇到 script 才结束的,而是没有完全加载出来,

你等待一下就好

修改代码:
import sys
import os


from playwright.sync_api import sync_playwright
from playwright.sync_api import expect
import time
import datetime


link_zaojv = 'https://zaojv.com/'

with sync_playwright() as p:
    #browser = p.chromium.launch(headless=False)
    browser = p.chromium.launch(headless=True)
    context = browser.new_context()


    #page.set_viewport_size({"width": 1920, "height": 1080})
    page1 = context.new_page()
    

    page1.goto(link_zaojv, timeout=0)
    story_title = '打草惊蛇'
    page1.locator('//html/body/div/div[1]/table/tbody/tr/td[2]/form/input[5]').fill(story_title)
    page1.locator('//html/body/div/div[1]/table/tbody/tr/td[2]/form/input[6]').click()
    #print(page1.content())
    example_raw = page1.content()

    time.sleep(0.2)                   # 等待一下
    story_title_example = page1.inner_text('//*[@id="student"]')
    
    print(story_title_example)




    page1.close()
    context.close()
    browser.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-10 15:14:22 | 显示全部楼层
isdkz 发表于 2023-3-10 14:44
那个不是因为遇到 script 才结束的,而是没有完全加载出来,

你等待一下就好

好厉害。 我加个10就好了。

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

使用道具 举报

发表于 2023-3-10 15:15:46 | 显示全部楼层
blackantt 发表于 2023-3-10 15:14
好厉害。 我加个10就好了。


10也太久了吧,等个零点几秒就好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-10 16:05:00 | 显示全部楼层
本身就有等待方法的嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-10 17:06:06 | 显示全部楼层
isdkz 发表于 2023-3-10 15:15
10也太久了吧,等个零点几秒就好

也许我网不行吧, 0.2 还不行。  干脆多一点。再不行就timeout=0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-10 17:07:07 | 显示全部楼层
cflying 发表于 2023-3-10 16:05
本身就有等待方法的嘛

照理说,它会自动判断,自动等待。  不过很多时候不好用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 09:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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