ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingรบกวนเทพ iMacros อีกครั้งครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: รบกวนเทพ iMacros อีกครั้งครับ  (อ่าน 1088 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
karokkokka
Newbie
*

พลังน้ำใจ: 0
ออฟไลน์ ออฟไลน์

กระทู้: 7



ดูรายละเอียด
« เมื่อ: 02 เมษายน 2016, 17:52:58 »

หน้าเว็บที่ผมต้องการใช้ imacro เก็บข้อมูลเป็นแบบนี้ครับนี้ครับ

โค๊ด:
<ul>
<li class="item a">1</li>
<li class="item a">3</li>
<li class="item b">12</li>
<li class="item c">0</li>
<li class="item a">6</li>
<li class="item a">7</li>
<li class="item b">11</li>
<li class="item a">5</li>
</ul>

แล้วโค๊ดนี้ก็จะเปลี่ยนไปเรื่อยๆ ทุกๆ 30 วิ โดย code item บรรทัดบนสุดก็จะหายไป แล้วก็จะมี item ใหม่มาแทนข้างล่าง
แต่ผมต้องการจะเก็บข้อมูลแค่ item ล่างสุด ซึ่งในที่นี้ก็คือ เลข 5
โค๊ด:
<li class="item a">5</li>
จะพอมีแนวทางไหนได้บ้างครับ

ขอบพระคุณล่วงหน้าครับ  wanwan017 wanwan012
บันทึกการเข้า
rungchai39
ก๊วนเสียว
*

พลังน้ำใจ: 24
ออฟไลน์ ออฟไลน์

กระทู้: 226



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 02 เมษายน 2016, 18:35:38 »

ภายในแท็ค ul หรือ li ไม่มีแอททิบิ้วอะไรอ้างอิงเลยเหรอครับ เช่น <ul id="ABC" CLASS="ABC">...หรือ <li CLASS="ABC">... เป็นต้น

กรณี UL และ LI ไม่มีแอททิบิ้วใดอ้างอิงเลย  ต้องดูแท็ค HTML ที่ครอบเขาอยู่ว่ามี แอททิ้บิ้ว id หรือ class อ้างอิงไหม เพื่อจะเข้าถึงลิสปลายทางที่เราต้องการเก็บข้อมูลได้น่ะครับ

ถ้าบอกมาเท่าที่โพสถาม เขียนโค้ดให้ไป เกรงว่าจะใช้ไม่ได้ครับ เพราะเป็นได้ว่า ในหน้านั้นจะมีแท็ค ul มากกว่า 1 จุดน่ะครับ wanwan007

« แก้ไขครั้งสุดท้าย: 02 เมษายน 2016, 18:35:57 โดย rungchai39 » บันทึกการเข้า

50cc
ก๊วนเสียว
*

พลังน้ำใจ: 19
ออฟไลน์ ออฟไลน์

กระทู้: 342



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 02 เมษายน 2016, 19:49:23 »

อ้าง POS ได้มั้ยครับ ลองไล่ตำแหน่งดูว่าอยู่ที่ POS ไหน เช่น

โค๊ด:
TAG POS=8 TYPE=li ATTR=class:"item*" EXTRACT=TXT

ถ้าตำแหน่งไม่เปลี่ยนก็น่าจะได้นะครับ ถ้าเปลี่ยน รอท่านต่อไป  Embarrassed
บันทึกการเข้า
rungchai39
ก๊วนเสียว
*

พลังน้ำใจ: 24
ออฟไลน์ ออฟไลน์

กระทู้: 226



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 02 เมษายน 2016, 21:49:59 »

ต้องขออภัยครับ wanwan017 ก่อนหน้านี้ผมพิมพ์ โดยไม่ดูว่ามีคลาสกำกับที่ li แต่ยังไงก็ควรระบุ แอททิบิ้วที่ครอบ li เหล่านี้ให้ชัดเจนจะดีกว่านะครับ ไม่งั้นโค้ดอาจจะพลาดได้  โคด้ที่ผมแนะนำเป็นดังนี้ครับ

โค๊ด:
URL GOTO=javascript:var<SP>ct=window.content.document.getElementsByTagName('UL')[0].getElementsByClassName('item');<SP>var<SP>res=ct.length;var<SP>myDiv=window.content.document.createElement("div");myDiv.id="Mycreate";window.content.document.documentElement.appendChild(myDiv);window.content.document.getElementById("Mycreate").textContent=res;void(0);
TAG POS=1 TYPE=DIV ATTR=ID:Mycreate EXTRACT=TXT
PROMPT {{!EXTRACT}}

ตัวแปรที่จะทำให้โค้ดนี้ทำงานไม่ไ่ด้คือ ul ครับ ผมระบุ ul เป็นตัวแรกของหน้าเว็บนั้นๆ ที่เขาเจอ  หากมี ul ก่อนหน้าที่จะถึงกลุ่มเป้าหมาย  โค้ดนี้จะนับจำนวนผิดพลาดทันทีครับ  ถ้าหากระบุ UL หรือ HTML ที่มีแอททิบิ้วอ้างอิงที่ครอบ ul กลุ่มนี้อยู่จะทำให้โค้ดทำงานตรงจุดมาขึ้นครับ  wanwan016
บันทึกการเข้า

karokkokka
Newbie
*

พลังน้ำใจ: 0
ออฟไลน์ ออฟไลน์

กระทู้: 7



ดูรายละเอียด
« ตอบ #4 เมื่อ: 03 เมษายน 2016, 00:03:13 »

อ้าง POS ได้มั้ยครับ ลองไล่ตำแหน่งดูว่าอยู่ที่ POS ไหน เช่น

โค๊ด:
TAG POS=8 TYPE=li ATTR=class:"item*" EXTRACT=TXT

ถ้าตำแหน่งไม่เปลี่ยนก็น่าจะได้นะครับ ถ้าเปลี่ยน รอท่านต่อไป  Embarrassed

ตำแหน่งเปลี่ยนเรื่อยๆเลยครับ ขอบคุณสำหรับคำแนะนำครับ  wanwan011

ต้องขออภัยครับ wanwan017 ก่อนหน้านี้ผมพิมพ์ โดยไม่ดูว่ามีคลาสกำกับที่ li แต่ยังไงก็ควรระบุ แอททิบิ้วที่ครอบ li เหล่านี้ให้ชัดเจนจะดีกว่านะครับ ไม่งั้นโค้ดอาจจะพลาดได้  โคด้ที่ผมแนะนำเป็นดังนี้ครับ

โค๊ด:
URL GOTO=javascript:var<SP>ct=window.content.document.getElementsByTagName('UL')[0].getElementsByClassName('item');<SP>var<SP>res=ct.length;var<SP>myDiv=window.content.document.createElement("div");myDiv.id="Mycreate";window.content.document.documentElement.appendChild(myDiv);window.content.document.getElementById("Mycreate").textContent=res;void(0);
TAG POS=1 TYPE=DIV ATTR=ID:Mycreate EXTRACT=TXT
PROMPT {{!EXTRACT}}

ตัวแปรที่จะทำให้โค้ดนี้ทำงานไม่ไ่ด้คือ ul ครับ ผมระบุ ul เป็นตัวแรกของหน้าเว็บนั้นๆ ที่เขาเจอ  หากมี ul ก่อนหน้าที่จะถึงกลุ่มเป้าหมาย  โค้ดนี้จะนับจำนวนผิดพลาดทันทีครับ  ถ้าหากระบุ UL หรือ HTML ที่มีแอททิบิ้วอ้างอิงที่ครอบ ul กลุ่มนี้อยู่จะทำให้โค้ดทำงานตรงจุดมาขึ้นครับ  wanwan016

ขอบคุณมากๆครับ แต่ผมยังมือใหม่มากเลยงงอยู่ครับ อิอิ แต่จะลองศึกษาดูให้เข้าใจแล้วมีอะไรจะรบกวนมาขอคำปรึกษาใหม่นะครับ  Embarrassed wanwan017

บันทึกการเข้า
rungchai39
ก๊วนเสียว
*

พลังน้ำใจ: 24
ออฟไลน์ ออฟไลน์

กระทู้: 226



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 03 เมษายน 2016, 09:49:18 »

ต้องขออภัยครับ wanwan017 ก่อนหน้านี้ผมพิมพ์ โดยไม่ดูว่ามีคลาสกำกับที่ li แต่ยังไงก็ควรระบุ แอททิบิ้วที่ครอบ li เหล่านี้ให้ชัดเจนจะดีกว่านะครับ ไม่งั้นโค้ดอาจจะพลาดได้  โคด้ที่ผมแนะนำเป็นดังนี้ครับ

โค๊ด:
URL GOTO=javascript:var<SP>ct=window.content.document.getElementsByTagName('UL')[0].getElementsByClassName('item');<SP>var<SP>res=ct.length;var<SP>myDiv=window.content.document.createElement("div");myDiv.id="Mycreate";window.content.document.documentElement.appendChild(myDiv);window.content.document.getElementById("Mycreate").textContent=res;void(0);
TAG POS=1 TYPE=DIV ATTR=ID:Mycreate EXTRACT=TXT
PROMPT {{!EXTRACT}}

ตัวแปรที่จะทำให้โค้ดนี้ทำงานไม่ไ่ด้คือ ul ครับ ผมระบุ ul เป็นตัวแรกของหน้าเว็บนั้นๆ ที่เขาเจอ  หากมี ul ก่อนหน้าที่จะถึงกลุ่มเป้าหมาย  โค้ดนี้จะนับจำนวนผิดพลาดทันทีครับ  ถ้าหากระบุ UL หรือ HTML ที่มีแอททิบิ้วอ้างอิงที่ครอบ ul กลุ่มนี้อยู่จะทำให้โค้ดทำงานตรงจุดมาขึ้นครับ  wanwan016

 wanwan008 โค้ดที่ผมให้ไปเวลาเอาไปใช้งาน ก็เอา {{!EXTRACT}} ไปใช้ครับ
เช่น

ปกติถ้าเราต้องการดึง li รายการที่ 8 ตามที่ถามมาเราจะเขียนแบบนี้

TAG POS=8 TYPE=li ATTR=CLASS:*item* EXTRACT=TXT

แต่ปัญหาคือ เราไม่สามารถระบุตำแหน่ง POS ที่แน่นอนได้  ดังนั้น
เราถึงต้องใช้โค้ดที่ผมเขียนให้  ไปนับจำนวนลิสรายการทั้งหมด ว่ามีกี่รายการ
แต่ก็ด้วยความที่เราไม่สามารถส่งผ่านค่าที่เรานับจำนวนจากคำสั่ง Javascript ที่เขียนผ่านคำสั่ง URL GOTO มาให้ไอมาโครตรงๆได้ (หรือผมไม่รู้วิธีหว่า wanwan044)
ผมก็เลยเขียนคำสั่ง Javascript เพื่อฝั่งค่าที่ได้จากการนับลงไปที่หน้าเว็บฯนั้นเลย
จากนั้นเราก็ใช้คำสั่งไอมาโครทำการ EXTRACT ค่านั้นมาเก็บไว้

พอเราจะใช้งานเราก็นำไปใช้ได้เลยผ่านคำสั่ง EXTRACT ดังนี้

TAG POS={{!EXTRACT}} TYPE=li ATTR=CLASS:*item* EXTRACT=TXT

ผลที่ได้ คือ เราจะได้ตัวเลข หรือข้อความที่อยู่ใน li ตัวสุดท้ายทุกครั้งที่รันโค้ดครับ  Tongue

บันทึกการเข้า

karokkokka
Newbie
*

พลังน้ำใจ: 0
ออฟไลน์ ออฟไลน์

กระทู้: 7



ดูรายละเอียด
« ตอบ #6 เมื่อ: 03 เมษายน 2016, 20:23:03 »

ต้องขออภัยครับ wanwan017 ก่อนหน้านี้ผมพิมพ์ โดยไม่ดูว่ามีคลาสกำกับที่ li แต่ยังไงก็ควรระบุ แอททิบิ้วที่ครอบ li เหล่านี้ให้ชัดเจนจะดีกว่านะครับ ไม่งั้นโค้ดอาจจะพลาดได้  โคด้ที่ผมแนะนำเป็นดังนี้ครับ

โค๊ด:
URL GOTO=javascript:var<SP>ct=window.content.document.getElementsByTagName('UL')[0].getElementsByClassName('item');<SP>var<SP>res=ct.length;var<SP>myDiv=window.content.document.createElement("div");myDiv.id="Mycreate";window.content.document.documentElement.appendChild(myDiv);window.content.document.getElementById("Mycreate").textContent=res;void(0);
TAG POS=1 TYPE=DIV ATTR=ID:Mycreate EXTRACT=TXT
PROMPT {{!EXTRACT}}

ตัวแปรที่จะทำให้โค้ดนี้ทำงานไม่ไ่ด้คือ ul ครับ ผมระบุ ul เป็นตัวแรกของหน้าเว็บนั้นๆ ที่เขาเจอ  หากมี ul ก่อนหน้าที่จะถึงกลุ่มเป้าหมาย  โค้ดนี้จะนับจำนวนผิดพลาดทันทีครับ  ถ้าหากระบุ UL หรือ HTML ที่มีแอททิบิ้วอ้างอิงที่ครอบ ul กลุ่มนี้อยู่จะทำให้โค้ดทำงานตรงจุดมาขึ้นครับ  wanwan016

 wanwan008 โค้ดที่ผมให้ไปเวลาเอาไปใช้งาน ก็เอา {{!EXTRACT}} ไปใช้ครับ
เช่น

ปกติถ้าเราต้องการดึง li รายการที่ 8 ตามที่ถามมาเราจะเขียนแบบนี้

TAG POS=8 TYPE=li ATTR=CLASS:*item* EXTRACT=TXT

แต่ปัญหาคือ เราไม่สามารถระบุตำแหน่ง POS ที่แน่นอนได้  ดังนั้น
เราถึงต้องใช้โค้ดที่ผมเขียนให้  ไปนับจำนวนลิสรายการทั้งหมด ว่ามีกี่รายการ
แต่ก็ด้วยความที่เราไม่สามารถส่งผ่านค่าที่เรานับจำนวนจากคำสั่ง Javascript ที่เขียนผ่านคำสั่ง URL GOTO มาให้ไอมาโครตรงๆได้ (หรือผมไม่รู้วิธีหว่า wanwan044)
ผมก็เลยเขียนคำสั่ง Javascript เพื่อฝั่งค่าที่ได้จากการนับลงไปที่หน้าเว็บฯนั้นเลย
จากนั้นเราก็ใช้คำสั่งไอมาโครทำการ EXTRACT ค่านั้นมาเก็บไว้

พอเราจะใช้งานเราก็นำไปใช้ได้เลยผ่านคำสั่ง EXTRACT ดังนี้

TAG POS={{!EXTRACT}} TYPE=li ATTR=CLASS:*item* EXTRACT=TXT

ผลที่ได้ คือ เราจะได้ตัวเลข หรือข้อความที่อยู่ใน li ตัวสุดท้ายทุกครั้งที่รันโค้ดครับ  Tongue



ขอบคุณมากกๆเลยครับ ซึ้งจริงๆ อิอิ เดี๋ยวผมจะนำไปประยุกต์นะครับ เข้าใจหลักการแล้ว  wanwan011 wanwan011 wanwan017 wanwan017 wanwan017
บันทึกการเข้า
หน้า: [1]   ขึ้นบน
พิมพ์