Files
tophux_scrape/product/__pycache__/playwright-get-data.cpython-313.pyc

142 lines
35 KiB
Plaintext
Raw Normal View History

2025-11-23 11:15:45 +08:00
<EFBFBD>
2025-11-23 22:14:53 +08:00
R<>"i<>~<00><00><><00>SrSSKrSSKJr SSKJr SSKrSSKJr \R"5 \R"\RSSS9 "S S
2025-11-23 11:15:45 +08:00
5r S r \ S :Xa\R"\ "55 gg) uG
使用Playwright连接远程Chrome调试端口访问ProductHunt页面
<EFBFBD>N)<01>async_playwright)<01>logger)<01>datetime<6D>INFOz<4F><green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>)<02>level<65>formatc<00>`<00>\rSrSrSrSSjrSrSSjrSSjrSr Sr
S r S
r S r S rS rg)<12>ProductHuntScraper<65>uProductHunt数据抓取器c<00>H<00>XlSUlSUl/Ul/Ulg)N)<05>
2025-11-23 22:14:53 +08:00
debug_port<EFBFBD>browser<65>page<67> click_records<64>dom_selection_records)<02>selfr s <20>^c:\Users\xiaji\Documents\个人文件夹\夏骥\hothub的抓取\product\playwright-get-data.py<70>__init__<5F>ProductHuntScraper.__init__s%<00><00>$<24><0F><1B><04> <0C><18><04> <09><1F><04><1A>%'<27><04>"<22>c<00><00><># <00>[R"SUR35 [5R 5IShv<01>N UlUR
2025-11-23 11:15:45 +08:00
R RSUR35IShv<01>N UlURRnU(aAUSnURnU(a USUl O]UR5IShv<01>N Ul O?URR5IShv<01>N nUR5IShv<01>N Ul [R"S5 gN<>N<>NdN>N(![a#n[R "SU35 SnAgSnAff=f7f) u!连接到已运行的Chrome实例u(正在连接到Chrome远程调试端口 Nzhttp://localhost:ru成功连接到Chrome浏览器Tu连接Chrome失败: F)r<00>infor r<00>start<72>
playwright<EFBFBD>chromium<75>connect_over_cdpr<00>contexts<74>pagesr<00>new_page<67> new_context<78>success<73> Exception<6F>error)rr<00>contextr<00>es r<00>connect_to_existing_chrome<6D>-ProductHuntScraper.connect_to_existing_chromes-<00><00><00><0E> <0B> <0B>><3E>t<EFBFBD><EFBFBD><EFBFBD>>O<>P<>Q<> <19>$4<>$6<>$<<3C>$<<3C>$><3E>><3E>D<EFBFBD>O<EFBFBD>"&<26><1F><1F>!9<>!9<>!J<>!J<>#<23>D<EFBFBD>O<EFBFBD>O<EFBFBD>#4<>5<>"<0E><0E>D<EFBFBD>L<EFBFBD>
<1C>|<7C>|<7C>,<2C>,<2C>H<EFBFBD><17>"<22>1<EFBFBD>+<2B><07><1F> <0A> <0A><05><18> %<25>a<EFBFBD><08>D<EFBFBD>I<EFBFBD>'.<2E>&6<>&6<>&8<> 8<>D<EFBFBD>I<EFBFBD>!%<25> <0C> <0C> 8<> 8<> :<3A>:<3A><07>")<29>"2<>"2<>"4<>4<><04> <09> <12>N<EFBFBD>N<EFBFBD>;<3B> <<3C><17>1?<3F><0E>!9<>;<3B>4<><34>
<19> <19> <12>L<EFBFBD>L<EFBFBD>/<2F><01>s<EFBFBD>3<> 4<><18><> <19>s<EFBFBD><00>$E9<01>E <00>D?<04>>E <00>E<04>AE <00>E<04>'E <00>E<04>E <00>E<04>E <00>>E9<01>?E <00>E <00>E <00>E <00>E <00>
E6<03>E1<03>,E9<01>1E6<03>6E9c
<00><00><># <00>[R"5RS5SUUUUS.nURR U5 [
R "SUSUSUSU35 g7f) u记录点击行为<E8A18C>%Y-%m-%d %H:%M:%S<>click)<06> timestamp<6D>type<70>x<>y<>selector<6F> descriptionu记录点击: u
- 坐标(z, u) - 选择器: N)r<00>now<6F>strftimer<00>appendrr)rr-r.r/r0<00> click_records r<00> record_click<63>ProductHuntScraper.record_click@so<00><00><00>"<22><1C><1C><1E>0<>0<>1D<31>E<><1B><12><12> <20>&<26> 
<EFBFBD> <0C> <0A><1A><1A>!<21>!<21>,<2C>/<2F><0E> <0B> <0B>n<EFBFBD>[<5B>M<EFBFBD><1A>A<EFBFBD>3<EFBFBD>b<EFBFBD><11><03>?<3F>S[<5B>R\<5C>]<5D>^<5E>s<00>A*A,c<00><00><># <00>[R"5RS5SUUS.nURR U5 [
R "SUSU35 g7f)u记录DOM选取行为r)<00> dom_selection)r+r,r/r0u记录DOM选取: u - 选择器: N)rr1r2rr3rr)rr/r0<00>
dom_records r<00>record_dom_selection<6F>'ProductHuntScraper.record_dom_selectionMs\<00><00><00>"<22><1C><1C><1E>0<>0<>1D<31>E<>#<23> <20>&<26> 
<EFBFBD>
<EFBFBD> <0A>"<22>"<22>)<29>)<29>*<2A>5<><0E> <0B> <0B>'<27> <0B>}<7D>N<EFBFBD>8<EFBFBD>*<2A>M<>N<>s<00>A"A$c<00><00>4# <00>SSKnURURS.nS[R"5R S5S3n[ USSS 9nURX$S
S S 9 SSS5 [R"S U35 g!,(df  N(=f7f)u保存行为记录到文件rN)rr<00>playwright_behavior_records_z %Y%m%d_%H%M%Sz.json<6F>w<>utf-8<><01>encodingF<67><00><02> ensure_ascii<69>indentu行为记录已保存到: )
<EFBFBD>jsonrrrr1r2<00>open<65>dumprr!)rrF<00>records<64>filename<6D>fs r<00>save_behavior_records<64>(ProductHuntScraper.save_behavior_recordsXs<><00><00><00><13>"<22>/<2F>/<2F>%)<29>%?<3F>%?<3F>
<EFBFBD><07>
2<>(<28>,<2C>,<2C>.<2E>2I<32>2I<32>/<2F>2Z<32>1[<5B>[`<60>a<><08> <11>(<28>C<EFBFBD>'<27> 2<>a<EFBFBD> <10>I<EFBFBD>I<EFBFBD>g<EFBFBD>u<EFBFBD>Q<EFBFBD>I<EFBFBD> ?<3F>3<> <0F><0E><0E>3<>H<EFBFBD>:<3A>><3E>?<3F>3<> 2<>s<00>AB<01>B<03>%"B<01>
2025-11-23 22:14:53 +08:00
B<07>Bc<00><00><># <00>UR(d[R"S5 g[R"SU35 URR USSS9IShv<01>N [R"S5 S nS
nS nXB:GaFURR 5IShv<01>N n[R"S U35 S U;a1[R "SUS35 [R "S5 gSU;d SU;dSU;a;[R"S5 [R"S5IShv<01>N US- nM<>URRS5IShv<01>N nU(a[R "S5 g[R"U5IShv<01>N XC- n[R"SUS35 XB:aGMF[R"SUS35 [R"SURR 5IShv<01>N 35 URR 5IShv<01>N nU(a#SU;aSU;a[R "S 5 g[R"S!5 gGN#GN<>GNOGN'![a GNf=fN<>N<>Nf![a#n[R"S"U35 SnAgSnAff=f7f)#u导航到ProductHunt页面<E9A1B5>页面未初始化Fu正在访问: <20>domcontentloadedi<64><69><00><02>
wait_until<EFBFBD>timeoutNu)等待页面标题包含'Product Hunt'...<2E><<00>ru当前页面标题: z Product Huntu4页面标题已包含'Product Hunt',等待时间: u秒u!Product Hunt网站已成功打开Tz Just a momentu 请稍候zChecking your browseru.遇到Cloudflare验证等待验证完成...<2E>
<00>h1u检测到页面内容已加载u
已等待 u 秒,继续等待...u等待超时u/秒),页面标题仍未包含'Product Hunt'u最终页面标题: z Not Found<6E>Erroru0页面已正常加载但标题不符合预期u页面加载失败u访问页面失败: ) rrr#r<00>goto<74>titler!<00>asyncio<69>sleep<65>query_selectorr"<00>warning) r<00>url<72> max_wait_time<6D> wait_interval<61> waited_timerZ<00>
h1_element<EFBFBD> final_titler%s r<00>navigate_to_producthunt<6E>*ProductHuntScraper.navigate_to_producthunthsi<00><00><00><13>y<EFBFBD>y<EFBFBD> <12>L<EFBFBD>L<EFBFBD>-<2D> .<2E><18>; <19> <12>K<EFBFBD>K<EFBFBD>.<2E><13><05>.<2E> /<2F><16>)<29>)<29>.<2E>.<2E><13>1C<31>V<EFBFBD>.<2E>T<> T<> T<> <13>K<EFBFBD>K<EFBFBD>C<> D<><1E>M<EFBFBD><1D>M<EFBFBD><1B>K<EFBFBD><1D>-<2D>"<22>i<EFBFBD>i<EFBFBD>o<EFBFBD>o<EFBFBD>/<2F>/<2F><05><16> <0B> <0B>2<>5<EFBFBD>'<27>:<3A>;<3B>"<22>U<EFBFBD>*<2A><1A>N<EFBFBD>N<EFBFBD>%Y<>Ze<5A>Yf<59>fi<66>#j<>k<><1A>N<EFBFBD>N<EFBFBD>#F<>G<><1F>#<23>e<EFBFBD>+<2B>{<7B>e<EFBFBD>/C<>G^<5E>bg<62>Gg<47><1A>K<EFBFBD>K<EFBFBD> P<>Q<>!<21>-<2D>-<2D><02>+<2B>+<2B>+<2B><1F>2<EFBFBD>%<25>K<EFBFBD><1C><19>'+<2B>y<EFBFBD>y<EFBFBD>'?<3F>'?<3F><04>'E<>!E<>J<EFBFBD>!<21><1E><0E><0E>'G<>H<>#<23>"<22><1E>m<EFBFBD>m<EFBFBD>M<EFBFBD>2<>2<>2<><1B>,<2C> <0B><16> <0B> <0B>j<EFBFBD><1B> <0A>5K<35>L<>M<>?<1E>-<2D>D <13>N<EFBFBD>N<EFBFBD>_<EFBFBD>]<5D>O<EFBFBD>;j<>k<> l<> <12>K<EFBFBD>K<EFBFBD>.<2E>T<EFBFBD>Y<EFBFBD>Y<EFBFBD>_<EFBFBD>_<EFBFBD>5F<35>/F<>.G<>H<> I<>!%<25> <09> <09><0F><0F> 1<>1<>K<EFBFBD><1A>{<7B>+<2B>=<3D>'<27>Q\<5C>B\<5C><16><0E><0E>Q<>R<><1B><16> <0C> <0C>1<>2<><1C>i U<01>0<>,<2C>"F<01><>!<21><19><18><19><>3<> 0G<01>2<><32><19> <19> <12>L<EFBFBD>L<EFBFBD>/<2F><01>s<EFBFBD>3<> 4<><18><> <19>s<EFBFBD><00>)K<01>7J)<00>#J<04>$AJ)<00>'J <04>(AJ)<00>;K<01><AJ)<00>=J <04>> J)<00>
J<00>(J<04>)!J<00>
K<01> J)<00>%J#<04>&'J)<00>AJ)<00>J%
<EFBFBD>'J)<00>J'<04>-J)<00>.K<01>/J)<00>K<01>J)<00> J)<00> J)<00>J<00>
J <03>J)<00>J <03> J)<00>%J)<00>'J)<00>)
K<03>3K<03> K<01>K<03>Kc <00><00><># <00>U(d[R"S5 gUR(d[R"S5 gUR SS5IShv<01>N URR
n[R "SU35 [R "SU35 URRUS S
S 9IShv<01>N [R"S 5 URRS5IShv<01>N [R "S5 /SQnUGH7nURRU5IShv<01>N nU(Ga[R "SU35 /SQn U Hzn
URU
5IShv<01>N n U (aVU R5IShv<01>N [R"SU
35 URRS5IShv<01>N OM| URRRSS5IShv<01>N [R "S5 URRS5IShv<01>N OGM: [R "S5 URR5IShv<01>N n [R "SU 35 URRS5IShv<01>N n U (abU R!5IShv<01>N n[#UR%55S:<3A>a[R"S5 O[R"S 5 [R "S"5 URRS#5IShv<01>N S$nURR'US%S&9IShv<01>N [R "S'U35 URR)5IShv<01>N n[R "S(5 /S)QnUVs/sHnUUR+5;dMUPM nnU(a[R "S*U35 O[R"S+5 [R "S-5 /S.Qn[-US/5GHunn[R "S0US1[#U5S2U35 URRS3U35IShv<01>N nU(a<>UR!5IShv<01>N R%5nU(au[R"S4US5USS6S735 [R "S85 URRUS S9IShv<01>N [R"S9U35 Us $[R"S:US;35 GMGM [R "S=5 URRS5IShv<01>N n U (a<>U R!5IShv<01>N R%5n[#U5S>:<3A>auUSS?n[R "S@USS6S735 [R "S85 URRUS S9IShv<01>N [R"S9U35 U$[R"SB5 SCnURR'US%S&9IShv<01>N [R "SDU35 [R "SF5 URRUS S9IShv<01>N [R"S9U35 gGN<>GNe![a<>n[R"S U35 URRUS S9IShv<01>N [R"SU35 O0![a#n[R"SU35 SnAOSnAff=fSnAgSnAff=fGN<>GN<>GNJGN.GN<>![a GMyf=fGN<>GN<>![a GN<>f=f![a GM<>f=f![a$n[R"SU35 SnAGN<>SnAff=fGN<>![a$n[R"SU35 SnAGN<>SnAff=fGN<>GN<>![a$n[R"S!U35 SnAGNmSnAff=fGNAGN GN<>s snf![a$n[R"S,U35 SnAGN<>SnAff=fGN*GNGN<>![a(n[R"S:US<U35 SnAGM<>SnAff=fGNcGNGGN<>![a$n[R"SAU35 SnAGN<>SnAff=fGN<>![a$n[R"SEU35 SnAGN<>SnAff=fGN<>![Gan[R"SGU
discussion<EFBFBD>maker<65>creator<6F>author<6F> statementr0u页面包含关键词: u!页面未检测到常见关键词u获取页面内容失败: u$正在提取制作人评论内容...) zf//div[contains(@class, 'prose') and contains(@class, 'prose-format') and contains(@class, 'richText')]z1//*[@id="comment-4597755"]/div/div[2]/div/div/divzA//div[contains(@class, "comment")]//div[contains(@class, "text")]zB//div[contains(@class, "modal")]//div[contains(@class, "content")]z@//div[contains(@class, "dialog")]//div[contains(@class, "body")]z(//section//div[contains(@class, "text")]zG//div[contains(@class, "launch")]//div[contains(@class, "description")]z+//article//div[contains(@class, "content")]z%//main//div[contains(@class, "text")]z<>//div[contains(@class, 'styles_commentsContainer')]//div[contains(@class, 'styles_comment')]//div[contains(@class, 'styles_commentBody')]//pz%//div[contains(@class, 'comment')]//pz&//div[contains(@class, 'comments')]//p<>u尝试选择器 <20>/z: zxpath=u使用选择器 u$ 成功提取制作人评论内容: <20><><00>...u0提取完成,正在返回原始产品页面...u已成功返回原始页面: u
选择器 u 提取的内容为空u 失败: u?所有选择器失败,尝试提取页面主要文本内容...<2E>di<>u 提取页面主要文本内容: u&提取页面主要文本内容失败: u9所有提取策略都失败,保存截图用于调试...zmodal_debug_screenshot.pngu 模态窗口截图已保存到: u保存截图失败: u!正在返回原始产品页面...u,在当前窗口打开制作人链接失败: zdebug_maker_link_failure.pngu 错误调试截图已保存到: u保存调试截图失败: u0发生异常,尝试返回原始产品页面...)rr^rr#r5r_rrYr!r"<00>wait_for_load_stater]r*<00>wait_for_timeout<75>mouserZ<00> text_content<6E>len<65>strip<69>
screenshot<EFBFBD>content<6E>lower<65> enumerate)r<00>
2025-11-23 11:15:45 +08:00
maker_link<EFBFBD>
2025-11-23 22:14:53 +08:00
maker_text<EFBFBD> original_urlr%<00> return_error<6F>modal_selectorsr/<00> modal_element<6E>close_selectors<72>close_selector<6F> close_button<6F>
title_text<EFBFBD> body_element<6E> body_text<78>modal_screenshot<6F> page_content<6E>keywords<64>kw<6B>found_keywords<64>xpath_selectors<72>i<>xpath<74>comment_element<6E>maker_statement<6E> full_text<78>screenshot_path<74>debug_screenshot<6F>screenshot_errors r<00>+extract_maker_statement_from_current_window<6F>>ProductHuntScraper.extract_maker_statement_from_current_window<6F>s< <00><00><00><19> <12>N<EFBFBD>N<EFBFBD>2<> 3<><15><13>y<EFBFBD>y<EFBFBD> <12>L<EFBFBD>L<EFBFBD>3<> 4<><15>e <16><16>#<23>#<23>$5<>7c<37>d<> d<> d<> <20>9<EFBFBD>9<EFBFBD>=<3D>=<3D>L<EFBFBD> <12>K<EFBFBD>K<EFBFBD>1<>,<2C><1E>@<40> A<> <13>K<EFBFBD>K<EFBFBD>F<>z<EFBFBD>l<EFBFBD>S<> T<> <1A><1A>i<EFBFBD>i<EFBFBD>n<EFBFBD>n<EFBFBD>Z<EFBFBD><N<>X]<5D>n<EFBFBD>^<5E>^<5E>^<5E><16><0E><0E>3<>4<><17>)<29>)<29>/<2F>/<2F> <0A>><3E> ><3E> ><3E>5 D<01><16> <0B> <0B>?<3F>@<40> #<12><0F>!0<>H<EFBFBD>%!<21>.2<EFBFBD>i<EFBFBD>i<EFBFBD>.F<>.F<>x<EFBFBD>.P<>(P<> <0A>(<28>"<22>K<EFBFBD>K<EFBFBD>*M<>h<EFBFBD>Z<EFBFBD>(X<>Y<>/<1E>O<EFBFBD>3B<01><0E>!-<2D>9F<39>9U<39>9U<39>Vd<56>9e<39>3e<33>L<EFBFBD>'3<>.:<3A>.@<40>.@<40>.B<>(B<>(B<>(.<2E><0E><0E>9b<39>cq<63>br<62>7s<37>(t<>.2<EFBFBD>i<EFBFBD>i<EFBFBD>.H<>.H<><14>.N<>(N<>(N<>(-<2D> (4<>3B<01>%<25>&*<2A>i<EFBFBD>i<EFBFBD>o<EFBFBD>o<EFBFBD>&;<3B>&;<3B>B<EFBFBD><02>&C<> C<> C<> &<26> <0B> <0B>,X<> Y<>&*<2A>i<EFBFBD>i<EFBFBD>&@<40>&@<40><14>&F<> F<> F<>"<22>C)<29>!0<>V <13>K<EFBFBD>K<EFBFBD>;<3B> <<3C> A<01>#'<27>9<EFBFBD>9<EFBFBD>?<3F>?<3F>#4<>4<>
<EFBFBD><16> <0B> <0B>n<EFBFBD>Z<EFBFBD>L<EFBFBD>9<>:<3A>
A<01>%)<29>Y<EFBFBD>Y<EFBFBD>%=<3D>%=<3D>f<EFBFBD>%E<>E<> <0C><1F>&2<>&?<3F>&?<3F>&A<> A<>I<EFBFBD><1A>9<EFBFBD>?<3F>?<3F>,<2C>-<2D><02>2<><1E><0E><0E>'><3E>?<3F><1E><0E><0E>'D<>E<>
<13>K<EFBFBD>K<EFBFBD>,<2C> -<2D><16>)<29>)<29>,<2C>,<2C>T<EFBFBD>2<> 2<> 2<> 8<> <1C><16>)<29>)<29>&<26>&<26>,<<3C><04>&<26>M<> M<> M<> <12>K<EFBFBD>K<EFBFBD>@<40>AQ<41>@R<>S<> T<> ?<3F>%)<29>Y<EFBFBD>Y<EFBFBD>%6<>%6<>%8<>8<> <0C><16> <0B> <0B>3<>4<>o<01><08>/7<>!V<>x<EFBFBD><12>2<EFBFBD><1C>AS<41>AS<41>AU<41>;U<>"<22>x<EFBFBD><0E>!V<>!<21><1A>K<EFBFBD>K<EFBFBD>"9<>.<2E>9I<39> J<>K<><1A>N<EFBFBD>N<EFBFBD>#F<>G<> <13>K<EFBFBD>K<EFBFBD>><3E> ?<3F><0E>O<EFBFBD>$&<26>o<EFBFBD>q<EFBFBD>9<><08><01>5<EFBFBD>A<01><1A>K<EFBFBD>K<EFBFBD>"2<>1<EFBFBD>#<23>Q<EFBFBD>s<EFBFBD>?<3F>7K<37>6L<36>B<EFBFBD>u<EFBFBD>g<EFBFBD> V<>W<>,0<>I<EFBFBD>I<EFBFBD>,D<>,D<>v<EFBFBD>e<EFBFBD>W<EFBFBD>EU<45>,V<>&V<>O<EFBFBD>&<26>1@<40>1M<31>1M<31>1O<31>+O<>*V<>*V<>*X<><0F>*<2A>"<22>N<EFBFBD>N<EFBFBD>-=<3D>a<EFBFBD>S<EFBFBD>@d<>et<65>uy<75>vy<76>ez<65>d{<7B>{~<7E>+<>A<02>#<23>K<EFBFBD>K<EFBFBD>(Z<>[<5B>"&<26>)<29>)<29>.<2E>.<2E><1C>J\<5C>.<2E>"]<5D>]<5D>]<5D>"<22>N<EFBFBD>N<EFBFBD>-J<><<3C>.<2E>+Y<>Z<>#2<>2<>"<22>N<EFBFBD>N<EFBFBD>Z<EFBFBD><01>s<EFBFBD>:P<>+Q<>R<>'<27> :<3A>* <13>K<EFBFBD>K<EFBFBD>Y<> Z<> K<01>%)<29>Y<EFBFBD>Y<EFBFBD>%=<3D>%=<3D>f<EFBFBD>%E<>E<> <0C><1F>'3<>'@<40>'@<40>'B<>!B<> I<> I<> K<>I<EFBFBD><1A>9<EFBFBD>~<7E><03>+<2B>*3<>D<EFBFBD>S<EFBFBD>/<2F><0F><1E> <0B> <0B>&F<><EFBFBD>W[<5B>X[<5B>G\<5C>F]<5D>]`<60>$a<>b<><1F> <0B> <0B>$V<>W<>"<22>i<EFBFBD>i<EFBFBD>n<EFBFBD>n<EFBFBD>\<5C>FX<46>n<EFBFBD>Y<>Y<>Y<><1E><0E><0E>)F<>|<7C>n<EFBFBD>'U<>V<>.<2E>.<2E>
<13>N<EFBFBD>N<EFBFBD>V<> W<> 9<>"><3E><0F><1A>i<EFBFBD>i<EFBFBD>*<2A>*<2A><0F>4<EFBFBD>*<2A>P<>P<>P<><16> <0B> <0B>><3E><EFBFBD>>O<>P<>Q<>
<13>K<EFBFBD>K<EFBFBD>;<3B> <<3C><16>)<29>)<29>.<2E>.<2E><1C>:L<>.<2E>M<> M<> M<> <12>N<EFBFBD>N<EFBFBD>:<3A><<3C>.<2E>I<> J<><15>] e<01>_<01><><1C> <1A><16> <0C> <0C>3<>A<EFBFBD>3<EFBFBD>7<>8<>N<01><1E>)<29>)<29>.<2E>.<2E><1C>BT<42>.<2E>U<>U<>U<><1A>N<EFBFBD>N<EFBFBD>%<<3C>\<5C>N<EFBFBD>#K<>L<><4C> <20>N<01><1A>L<EFBFBD>L<EFBFBD>#=<3D>l<EFBFBD>^<5E>!L<>M<>M<><4D>N<01><><19><> <1A><> ?<3F>$)Q<01>"4f<01>(B<>(N<><4E>'0<>!-<2D>$,<2C>!-<2D><>
!D<01> F<><46>#,<2C>%<25> $<24>%<25><>%<25>!<21> <20>!<21><><1C> D<01><16><0E><0E>!><3E>q<EFBFBD>c<EFBFBD>B<>C<>C<><43> D<01><>5<><35><1C> A<01><16><0E><0E>!;<3B>A<EFBFBD>3<EFBFBD>?<3F>@<40>@<40><> A<01><>
F<01> A<><41>
<1D> A<01><16><0E><0E>!;<3B>A<EFBFBD>3<EFBFBD>?<3F>@<40>@<40><> A<01><>
3<> N<01>
9<><39>
"W<01><> <1D> ?<3F><16> <0C> <0C>9<>!<21><13>=<3D>><3E>><3E><> ?<3F><>8'W<01>+O<> ^<01><> !<21>A<01><1A>N<EFBFBD>N<EFBFBD>Z<EFBFBD><01>s<EFBFBD>)<29>A<EFBFBD>3<EFBFBD>#?<3F>@<40>@<40><>A<01><> F<01>!B<>Z<01><><1D> K<01><16> <0C> <0C>E<>a<EFBFBD>S<EFBFBD>I<>J<>J<><4A> K<01><>Q<01><><1C> 9<><16> <0C> <0C>3<>A<EFBFBD>3<EFBFBD>7<>8<>8<><38> 9<><39>
N<01><>
<19> <16> <12>L<EFBFBD>L<EFBFBD>G<><01>s<EFBFBD>K<> L<> N<01>#A<> <20><1A>i<EFBFBD>i<EFBFBD>*<2A>*<2A>0@<40>D<EFBFBD>*<2A>Q<>Q<>Q<><16> <0B> <0B>><3E>?O<>>P<>Q<>R<><52><1C> N<01><16> <0C> <0C>9<>:J<>9K<39>L<>M<>M<><4D> N<01><> J<01><16> <0B> <0B>N<>O<><1A>i<EFBFBD>i<EFBFBD>n<EFBFBD>n<EFBFBD>\<5C>>P<>n<EFBFBD>Q<>Q<>Q<><16><0E><0E>!><3E>|<7C>n<EFBFBD>M<>N<><4E><1C> J<01><16> <0C> <0C>9<>,<2C><1E>H<>I<>I<><49> J<01><><16><>' <16>sl<00>Ak
<01>
f%<00>\-<04> A f%<00>-\3<00> \0<04> \3<00>&f%<00>_<04>f%<00>
`<00>+` <02> _<06>
.` <02>9_ <04> _<08>_ <04>,_<08>-;_ <04>(_<08>)_ <04>-` <02>4)_8<02>_2<06>8_8<02>_5<06>_8<02>`<00>f%<00>`<00>"f%<00>:a<00>a <04>a<00>6b<00>b<04>b<00>3b<04>47b<00>+f%<00>,b<00>4f%<00>6b7<04>7#f%<00>b:<04>f%<00>9c<00>b=<04>"c<00>9c<04>c<04>"c<00>=f%<00>>c<00>.f%<00>A c?<02> c6<06> c?<02>+c9<06>,A,c?<02>c<<06>c?<02>7f%<00>9k
<01>:c?<02>f%<00>3d=<00>d4<04>d=<00>0d7<04>1A6d=<00>'d:<04>(d=<00>k
<01>f%<00>e1<00>=e.<04>>e1<00>3f%<00>f"<04>f%<00>,k
<01>-f%<00>0\3<00>3
_<03>=_ <03>^<02>4]7<06>5^<02>_ <03>
_<05>^<<05>7_ <03><_<05>_ <03>f%<00>k
<01> _<03>f%<00>` <02>_ <04>_ <04>_ <04>
_/<07>*` <02>._/<07>/` <02>2_8<02>5_8<02>8
`<05>` <02>`<05>` <02>
`<05>`<00>`<05>`<00>
a <03>%a<03>>f%<00>a <03> f%<00> a<00>
a=<03>a8<03>2f%<00>8a=<03>=f%<00>b<00>b<00>
b4<03>b/<03>)f%<00>/b4<03>4f%<00>:f%<00>=c<00>c<00>
c3<03>c.<03>(f%<00>.c3<03>3f%<00>6c?<02>9c?<02><c?<02>?
d1<05> d,<05>%f%<00>,d1<05>1f%<00>4d=<00>7d=<00>:d=<00>=
e+<03>e&<03> f%<00>&e+<03>+f%<00>.e1<00>1
f<03>;f<03>f%<00>f<03>f%<00>% k<03>0k<03>
h <02>)g,<06>*h <02>k<03>
h6<05>h1<05>,k<03>1h6<05>6k<03>:3j <02>-i0<06>.j <02> k<03>
j:<05>j5<05>0k<03>5j:<05>:k<03>=k
<01>k<03>k
c<00><00>Z# <00>[R"S5 URR5IShv<01>N nUR USSS9IShv<01>N UR S5IShv<01>N [R"S5 UR SS 5IShv<01>N URS5IShv<01>N nU(Ga[R"S
5 UR S S 5IShv<01>N URS 5IShv<01>N nU(a\[R"S 5 UR5IShv<01>N nUR5n[R"SUSSS35 O<>[R"S5 UR5IShv<01>N nUR5n[R"SUSSS35 O5[R"S5 Un[R"SUSSS35 [R"S5 UR S5IShv<01>N UR5IShv<01>N [R"S5 U$GN$GNGN<>GN<>GN<>GN<>GNjGN8N<>NNN8![a%n [R"SU 35 UsSn A $Sn A ff=f7f)u0备用方法直接在新窗口中打开链接u9使用备用方法:直接在新窗口中打开链接...NrPi0urQi<>:u0页面加载等待完成,开始提取内容...<2E>sectionu,备用方法-新窗口第一个section标签u找到第一个section标签zdiv:not([class])u+备用方法-section下无class的div标签u找到无class的div标签u制作人发言(新窗口): rlryu未找到无class的div标签u 制作人发言(回退section): rxu未找到section标签u 制作人发言(回退a标签): u等待内容完全稳定...i<> u新窗口已关闭u备用方法也失败: )rrrrrYr|r:r]r!<00>
inner_textr<EFBFBD>r^<00>closer"r#)
rr<>r<>r<00> first_section<6F>div_without_classr<73><00>result<6C> section_textr%s
r<00>$_extract_maker_statement_direct_open<65>7ProductHuntScraper._extract_maker_statement_direct_open<65>sH<00><00><00>6 <1E> <12>K<EFBFBD>K<EFBFBD>S<> T<>!<21>\<5C>\<5C>2<>2<>4<>4<>H<EFBFBD><1B>-<2D>-<2D>
2025-11-23 11:15:45 +08:00
<EFBFBD>7I<EFBFBD>SX<EFBFBD>-<2D>Y<> Y<> Y<><1B>+<2B>+<2B>E<EFBFBD>2<> 2<> 2<> <12>K<EFBFBD>K<EFBFBD>J<> K<><17>+<2B>+<2B>I<EFBFBD>7e<37>f<> f<> f<>"*<2A>"9<>"9<>)<29>"D<>D<>M<EFBFBD><1C><16><0E><0E>=<3D>><3E><1B>/<2F>/<2F>0B<30>Dq<44>r<>r<>r<>*7<>*F<>*F<>GY<47>*Z<>$Z<>!<21>$<24><1A>N<EFBFBD>N<EFBFBD>#?<3F>@<40>-><3E>,H<>,H<>,J<>&J<>O<EFBFBD>,<2C>2<>2<>4<>F<EFBFBD><1A>K<EFBFBD>K<EFBFBD>"><3E>v<EFBFBD>e<EFBFBD>t<EFBFBD>}<7D>o<EFBFBD>S<EFBFBD> Q<>R<><1A>N<EFBFBD>N<EFBFBD>#B<>C<>)6<>)A<>)A<>)C<>#C<>L<EFBFBD>)<29>/<2F>/<2F>1<>F<EFBFBD><1A>K<EFBFBD>K<EFBFBD>"B<>6<EFBFBD>$<24>3<EFBFBD><<3C>.<2E>PS<50> T<>U<><16><0E><0E>7<>8<>#<23><06><16> <0B> <0B>><3E>z<EFBFBD>$<24>3<EFBFBD>?O<>>P<>PS<50>T<>U<> <13>K<EFBFBD>K<EFBFBD>5<> 6<><1A>+<2B>+<2B>D<EFBFBD>1<> 1<> 1<><1B>.<2E>.<2E>"<22> "<22> "<22> <12>K<EFBFBD>K<EFBFBD>,<2C> -<2D><19>M<EFBFBD>]5<> Z<01> 3<> g<01>D<>
s<01>$Z<>
'K<01>$D<01> 2<> #<23><>
<19> <1E> <12>L<EFBFBD>L<EFBFBD>2<>1<EFBFBD>#<23>6<> 7<><1D> <1D><> <1E>s<EFBFBD><00>J+<01>3I9<00>I<04>I9<00>I<04>I9<00>)I!<04>*/I9<00>I$<04>I9<00>2I'<04>37I9<00>*I*<04>+I9<00>I-<04>4I9<00>8I0<04>9AI9<00>I3<04>BI9<00>&I5<04>'I9<00>>I7<04>?I9<00>J+<01>I9<00>I9<00>!I9<00>$I9<00>'I9<00>*I9<00>-I9<00>0I9<00>3I9<00>5I9<00>7I9<00>9
2025-11-23 22:14:53 +08:00
J(<03>J#<03>J(<03>J+<01>#J(<03>(J+c<00><00><> # <00>UR(d[R"S5 g0n[R"S5 UR SS5IShv<01>N URR S5IShv<01>N nU(aFUR 5IShv<01>N R5US'[R"SUS35 O[R"S 5 [R"S 5 UR S S 5IShv<01>N URR S5IShv<01>N nU(aJUR 5IShv<01>N R5US'[R"SUSSSS35 O[R"S5 [R"S5 UR SS5IShv<01>N URR S5IShv<01>N nU(aFUR 5IShv<01>N R5US'[R"SUS35 O[R"S5 [R"S5 [R"S5 URRS5IShv<01>N UR S S!5IShv<01>N URR S"5IShv<01>N nU(Ga^UR S#S$5IShv<01>N URS%5IShv<01>N nU(Ga UR 5IShv<01>N R5nURS&5IShv<01>N n U (a<>U RS'5(d%S(n
2025-11-23 11:15:45 +08:00
U RS)5(aX<>-n OU
2025-11-23 22:14:53 +08:00
S)-U -n U S*:XdU S(:Xa$[R"S+U 35 S,US-'S,US.'O<>X<EFBFBD>S-'[R"S/U 35 URX<>5IShv<01>N US.'OO[R"S05 S,US-'S,US.'O.[R"S15 O[R"S25 S4n [U S5S6S79n U R!S85 U R!SUR#SS95S:35 U R!SUR#SS95S:35 U R!S;UR#S.S95S:35 U R!SUR#SS95S:35 U R!S<[$R&"5R)S=5S>35 SSS5 [R"S?U 35 S@n URR+U SASB9IShv<01>N [R"SCU 35 U$GNTGN4GN![a$n[R"S
U35 SnAGN<>SnAff=fGN<>GN<>GN<>![a$n[R"SU35 SnAGNxSnAff=fGNTGN4GN![a$n[R"SU35 SnAGN<>SnAff=fGN<>GN<>GN<>GNaGNKGN.GN
GNe![a$n[R"S3U35 SnAGN9SnAff=f!,(df  GN^=fGN)![a#n[R"SDU35 SnAgSnAff=f7f)Eu提取产品信息rONu正在提取产品名称...z//h1u 产品名称z
xpath=//h1<68>nameu产品名称: u未找到XPath为//h1的元素u提取产品名称失败: u正在提取产品简介...z=//*[@class="relative text-16 font-normal text-gray-700"]//divu 产品简介zCxpath=//*[@class="relative text-16 font-normal text-gray-700"]//div<69> introductionu产品简介: rxryuW未找到XPath为//*[@class="relative text-16 font-normal text-gray-700"]//div的元素u提取产品简介失败: u正在提取用户数...z4//*[@class="flex flex-row gap-2"]//div/div[2]/span/pu 用户数z:xpath=//*[@class="flex flex-row gap-2"]//div/div[2]/span/p<>
user_countu 用户数: uN未找到XPath为//*[@class="flex flex-row gap-2"]//div/div[2]/span/p的元素u提取用户数失败: u$正在提取制作人发言链接...u等待页面元素加载...i Nz$//span[contains(@class, "absolute")]u制作人span标签z*xpath=//span[contains(@class, "absolute")]z.//span[contains(@class, "absolute")]/parent::ariz!(element) => element.closest("a")<29>href<65>httpzhttps://www.producthunt.comrwzhttps://www.producthunt.com/u&制作人链接无效,跳过提取: rhr<>r<>u制作人链接: u未获取到制作人链接u"未找到制作人链接的a标签u>未找到XPath为//span[contains(@class, "absolute")]的元素u#提取制作人发言链接失败: ztemp_product_info.txtr>r?r@u#=== Product Hunt 产品信息 ===
2025-11-23 11:15:45 +08:00
u 未获取z
u制作人发言: u提取时间: r)<00>
2025-11-23 22:14:53 +08:00
u&产品信息已保存到临时文件: zproduct_screenshot.pngTrmu页面截图已保存到: u提取产品信息失败: )rrr#rr:r]r~r<>r^r"r|<00>evaluate_handle<6C> get_attribute<74>
startswithr<EFBFBD>rG<00>write<74>getrr1r2r<>)r<00> product_info<66> name_elementr%<00> intro_element<6E>user_count_element<6E> span_element<6E> a_elementr<74>r<><00>base_url<72>temp_file_pathrKr<>s r<00>extract_product_info<66>'ProductHuntScraper.extract_product_info<66>s+<00><00><00><13>y<EFBFBD>y<EFBFBD> <12>L<EFBFBD>L<EFBFBD>-<2D> .<2E><17>w <18><1D>L<EFBFBD> <13>K<EFBFBD>K<EFBFBD>5<> 6<> ?<3F><1A>/<2F>/<2F><06><0E>G<>G<>G<>%)<29>Y<EFBFBD>Y<EFBFBD>%=<3D>%=<3D>l<EFBFBD>%K<>K<> <0C><1F>2><3E>2K<32>2K<32>2M<32>,M<>+T<>+T<>+V<>L<EFBFBD><16>(<28><1A>K<EFBFBD>K<EFBFBD>.<2E><1C>f<EFBFBD>1E<31>0F<30> G<>H<><1A>N<EFBFBD>N<EFBFBD>#C<>D<>
2025-11-23 11:15:45 +08:00
<13>K<EFBFBD>K<EFBFBD>5<> 6<> ?<3F><1A>/<2F>/<2F>0o<30>q<71>A<02>A<02>A<02>&*<2A>i<EFBFBD>i<EFBFBD>&><3E>&><3E>@E<02>'F<02>!F<02> <0A> <20>:G<>:T<>:T<>:V<>4V<34>3]<5D>3]<5D>3_<33>L<EFBFBD><1E>0<><1A>K<EFBFBD>K<EFBFBD>.<2E><1C>n<EFBFBD>1M<31>d<EFBFBD>s<EFBFBD>1S<31>0T<30>TW<54> X<>Y<><1A>N<EFBFBD>N<EFBFBD>#~<7E><>
<13>K<EFBFBD>K<EFBFBD>2<> 3<> <<3C><1A>/<2F>/<2F>0f<30>hs<68>t<>t<>t<>+/<2F>9<EFBFBD>9<EFBFBD>+C<>+C<>EA<02>,B<02>&B<02>"<22>%<25>8J<38>8W<38>8W<38>8Y<38>2Y<32>1`<60>1`<60>1b<31>L<EFBFBD><1C>.<2E><1A>K<EFBFBD>K<EFBFBD>+<2B>l<EFBFBD><<3C>.H<>-I<> J<>K<><1A>N<EFBFBD>N<EFBFBD>#u<>v<>
2025-11-23 22:14:53 +08:00
<13>K<EFBFBD>K<EFBFBD>><3E> ?<3F>4 H<01><16> <0B> <0B>9<>:<3A><1A>i<EFBFBD>i<EFBFBD>0<>0<><15>7<>7<>7<><1B>/<2F>/<2F>0V<30>Xm<58>n<>n<>n<>%)<29>Y<EFBFBD>Y<EFBFBD>%=<3D>%=<3D>>j<>%k<>k<> <0C><1F><1E>3<>3<>4d<34>fw<66>x<>x<>x<>'3<>&B<>&B<>Cf<43>&g<> g<>I<EFBFBD>!<21>,5<>,B<>,B<>,D<>&D<>%K<>%K<>%M<>
2025-11-23 11:15:45 +08:00
<EFBFBD>+4<>+B<>+B<>6<EFBFBD>+J<>%J<>
2025-11-23 22:14:53 +08:00
<EFBFBD>&<26>#-<2D>#8<>#8<><16>#@<40>#@<40>+H<><08>#-<2D>#8<>#8<><13>#=<3D>#=<3D>19<31>1F<31>J<EFBFBD>19<31>C<EFBFBD><1E>*<2A>1L<31>J<EFBFBD> *<2A>-K<>K<>z<EFBFBD>]z<>Oz<4F> &<26><0E><0E>1W<31>Xb<58>Wc<57>/d<> e<>=?<3F> <0C>\<5C> :<3A>BD<42> <0C>-><3E> ?<3F>=G<>\<5C> :<3A> &<26> <0B> <0B>.?<3F>
<EFBFBD>|<7C>,L<> M<>IM<01>Hx<48>Hx<48>zD<02>IQ<02>CQ<02> <0C>-><3E> ?<3F>"<22>N<EFBFBD>N<EFBFBD>+H<>I<>9;<3B>L<EFBFBD><1C>6<>>@<40>L<EFBFBD>):<3A>;<3B><1E><0E><0E>'K<>L<><1A>N<EFBFBD>N<EFBFBD>#e<>f<>
5<>N<EFBFBD><15>n<EFBFBD>c<EFBFBD>G<EFBFBD><<3C><01><11><07><07>?<3F>@<40><11><07><07>.<2E><1C>)9<>)9<>&<26>+<2B>)N<>(O<>t<EFBFBD>T<>U<><11><07><07>.<2E><1C>)9<>)9<>.<2E>+<2B>)V<>(W<>W[<5B>\<5C>]<5D><11><07><07>+<2B>L<EFBFBD>,<<3C>,<<3C>=N<>P[<5B>,\<5C>+]<5D>]a<>b<>c<><11><07><07>+<2B>l<EFBFBD>&6<>&6<>|<7C>[<5B>&Q<>%R<>RV<52>W<>X<><11><07><07>.<2E><18><1C><1C><1E>)@<40>)@<40>AT<41>)U<>(V<>VX<56>Y<>Z<> =<3D> <13>K<EFBFBD>K<EFBFBD>@<40><1E>@P<>Q<> R<>7<>O<EFBFBD><16>)<29>)<29>&<26>&<26>O<EFBFBD>t<EFBFBD>&<26>L<> L<> L<> <12>K<EFBFBD>K<EFBFBD>4<>_<EFBFBD>4E<34>F<> G<><1F> <1F>[H<01>K<>,M<><4D><1D> ?<3F><16> <0C> <0C>9<>!<21><13>=<3D>><3E>><3E><> ?<3F><> A<02>!F<02>4V<34><56><1D> ?<3F><16> <0C> <0C>9<>!<21><13>=<3D>><3E>><3E><> ?<3F><> u<01>&B<02>2Y<32><59><1D> <<3C><16> <0C> <0C>6<>q<EFBFBD>c<EFBFBD>:<3A>;<3B>;<3B><> <<3C><>8<>o<01>k<>y<01>!h<01>
'E<01>%J<>,CQ<02><><1D> H<01><16> <0C> <0C>B<>1<EFBFBD>#<23>F<>G<>G<><47> H<01><>
2025-11-23 11:15:45 +08:00
=<3D><<3C><> M<01><>
2025-11-23 22:14:53 +08:00
<19> <18> <12>L<EFBFBD>L<EFBFBD>5<>a<EFBFBD>S<EFBFBD>9<> :<3A><17><> <18>s<EFBFBD><00>)[*<01>Z:<00>V7<00>V.<04>"V7<00>=V1<04>>V7<00>V4<04>1V7<00>Z:<00>V7<00>%Z:<00>=W1<00>W(<04>"W1<00>5W+<04>6W1<00>W.<04>5W1<00>
Z:<00> W1<00>!Z:<00>9X+<00>X"<04>"X+<00>1X%<04>2X+<00>X(<04>1X+<00>Z:<00>X+<00>Z:<00>14Y4<00>%Y<04>&Y4<00>?Y<04>"Y4<00>"Y"<04>#!Y4<00>Y%<04>Y4<00>Y(<04>Y4<00>=Y+<04>>&Y4<00>$Y.<04>%A5Y4<00>Z:<00>1Y4<00> Y1<04> Y4<00>Z:<00> Y4<00>5Z:<00>6Y4<00> Z:<00> Y4<00>#Z:<00>1CZ%<03>AZ:<00>Z7<04>Z:<00>-[*<01>.V7<00>1V7<00>4V7<00>7
W%<03>W <03>Z:<00> W%<03>%Z:<00>(W1<00>+W1<00>.W1<00>1
X<03>;X<03>Z:<00>X<03>Z:<00>"X+<00>%X+<00>(X+<00>+
Y<03>5Y<03>Z:<00>Y<03>Z:<00>Y4<00>Y4<00>"Y4<00>%Y4<00>(Y4<00>+Y4<00>.Y4<00>1Y4<00>4
Z"<03>>Z<03>Z:<00>Z"<03>"Z:<00>%
Z4<07>/ Z:<00>:
['<03>["<03>[*<01>"['<03>'[*c<00><00>^# <00>UR(a8URR5IShv<01>N [R"S5 [ US5(aKUR
2025-11-23 11:15:45 +08:00
(a9UR
2025-11-23 22:14:53 +08:00
R 5IShv<01>N [R"S5 gggNwN7f)u 关闭连接Nu浏览器连接已关闭ruPlaywright实例已关闭)rr<>rr<00>hasattrr<00>stop)rs rr<><00>ProductHuntScraper.closeUsw<00><00><00> <0F><<3C><<3C><16>,<2C>,<2C>$<24>$<24>&<26> &<26> &<26> <12>K<EFBFBD>K<EFBFBD>2<> 3<> <12>4<EFBFBD><1C> &<26> &<26>4<EFBFBD>?<3F>?<3F><16>/<2F>/<2F>&<26>&<26>(<28> (<28> (<28> <12>K<EFBFBD>K<EFBFBD>3<> 4<>,;<3B> &<26> '<27> )<29>s"<00>/B-<01>B)<04>AB-<01> B+<04> B-<01>+B-)rrr rrrN)<01>$)rhrh)rh)<10>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__firstlineno__<5F>__doc__rr&r5r:rLrer<>r<>r<>r<><00>__static_attributes__<5F>rrr
2025-11-23 11:15:45 +08:00
r
2025-11-23 22:14:53 +08:00
sB<00><00>$<24>(<28>"<19>H _<01> O<01>@<01> A<19>Fo<16>b8<1E>t}<18>~5rr
2025-11-23 11:15:45 +08:00
c<00><00><># <00>[R"S5 Sn[SS9nUR5IShv<01>N (dF[R"S5 UR 5IShv<01>N [R"S5 gUR U5IShv<01>N (dF[R"S5 UR 5IShv<01>N [R"S5 gUR5IShv<01>N nU(a<>[R"S 5 S
2025-11-23 22:14:53 +08:00
SK n[S S S S9nURX$SSS9 SSS5 [R"S5 UR5IShv<01>N [R"S5 O[R"S5 UR 5IShv<01>N [R"S5 gGN<>GNlGN?GNN<>!,(df  N<>=fN<>![a#n[R"SU35 SnANxSnAff=fNl!UR 5IShv<01>N [R"S5 f=f7f)u 主函数u#开始ProductHunt数据抓取任务z1https://www.producthunt.com/products/palettebrainr<6E>)r NuE无法连接到Chrome请确保Chrome已启动并启用远程调试u 任务完成u页面访问失败u产品信息提取完成rzproduct_info.jsonr>r?r@FrBrCu*产品信息已保存到 product_info.jsonu.行为记录已保存到 behavior_records.jsonu未能提取到产品信息u执行过程中发生错误: )rrr
r&r#r<>rer<>r!rFrGrHrLr^r")<06>
target_url<EFBFBD>scraperr<72>rFrKr%s r<00>mainr<6E>`s<><00><00><00>
<EFBFBD>K<EFBFBD>K<EFBFBD>5<>6<>E<01>J<EFBFBD>!<21>D<EFBFBD>1<>G<EFBFBD>"$<24><1C>7<>7<>9<>9<>9<> <12>L<EFBFBD>L<EFBFBD>`<60> a<> <12>:<16>m<EFBFBD>m<EFBFBD>o<EFBFBD><1D><1D><0E> <0B> <0B>N<EFBFBD>#<23>7<1D>4<>4<>Z<EFBFBD>@<40>@<40>@<40> <12>L<EFBFBD>L<EFBFBD>-<2D> .<2E> <12>0<16>m<EFBFBD>m<EFBFBD>o<EFBFBD><1D><1D><0E> <0B> <0B>N<EFBFBD>#<23>-%<25>9<>9<>;<3B>;<3B> <0C> <17> <12>N<EFBFBD>N<EFBFBD>5<> 6<> <17><15>)<29>3<EFBFBD><17>A<>Q<EFBFBD><14> <09> <09>,<2C><05>a<EFBFBD> <09>H<>B<01> <12>K<EFBFBD>K<EFBFBD>D<> E<><1A>/<2F>/<2F>1<> 1<> 1<> <12>K<EFBFBD>K<EFBFBD>H<> I<> <12>N<EFBFBD>N<EFBFBD>8<> 9<><16>m<EFBFBD>m<EFBFBD>o<EFBFBD><1D><1D><0E> <0B> <0B>N<EFBFBD>#<23>A:<3A>> <1E>5A<01>4 <1E>+<<3C> B<01>A<><41>
2025-11-23 11:15:45 +08:00
2<><32>
<15>:<3A><0E> <0C> <0C>4<>Q<EFBFBD>C<EFBFBD>8<>9<>9<><39>:<3A><>
<1E><>g<EFBFBD>m<EFBFBD>m<EFBFBD>o<EFBFBD><1D><1D><0E> <0B> <0B>N<EFBFBD>#<23>s<EFBFBD><00>"I<01>G6<00>G<04>G6<00>I<01>,G<04>-I<01>G6<00>G<04>G6<00>=I<01>G<04>I<01>,G6<00>?G!<04>0G6<00>0G#<03>1G6<00>3G4<04>4G6<00>H(<00>G6<00>%H(<00>&I<01>9H&<04>:I<01>G6<00>I<01>G6<00>I<01>!G6<00>#
G1<07>-G6<00>6
2025-11-23 22:14:53 +08:00
H#<03>H<03>H(<00>H#<03>#H(<00>&I<01>(I<03><H?<08>=I<03>I<01>__main__)r<>r[<00>playwright.async_apir<00>logurur<00>sysr<00>remove<76>add<64>stderrr
r<>r<><00>runr<6E>rr<00><module>r<>sq<00><01><04><0F>1<><19>
2025-11-23 11:15:45 +08:00
<EFBFBD><1D><07> <0A> <0A><0F><06>
<EFBFBD>
2025-11-23 22:14:53 +08:00
<EFBFBD>3<EFBFBD>:<3A>:<3A>V<EFBFBD>-R<03>S<03>K 5<>K 5<>\,$<24>^ <0C>z<EFBFBD><19> <0B>K<EFBFBD>K<EFBFBD><04><06><17>r