Saya akan menyarankan Anda melihat (dan, jika Anda mau, umpan balik tentang) metode yang Anda gunakan untuk mengambil informasi dari situs web, karena opsi terbaik dan paling dapat diandalkan adalah menggunakan metode yang berbeda sehingga Anda tidak perlu harus berurusan dengan ReactJS
komentar sama sekali.
Jika Anda memasukkan bagian dari AppleScript Anda bersama yang lain, itu mungkin merupakan kesempatan untuk menyelesaikan masalah Anda di sumbernya.
Meskipun demikian, inilah salah satu metode untuk menghapus tag dari string teks Anda, meskipun bukan satu-satunya metode, juga bukan metode yang paling anggun atau efisien. Tapi itu cukup bersih dan, menganggap tag semua ReactJS
tag komentar sederhana , itu akan melakukan pekerjaan yang dapat diandalkan.
set string1 to "<!-- react-text: 45 -->“<!-- /react-text --><!-- \nreact-text: 46 -->Megan Fox<!-- /react-text --><!-- react-text: 47 -- \n>”<!-- /react-text -->"
set string2 to "<!-- react-text: 477 -->“<!-- /react-text --><!-- react-text: 478 -->iPhone 8<!-- /react-text --><!-- react-text: 479 -->”<!-- /react-text -->"
stripTags from string1 --> "“Megan Fox”"
stripTags from string2 --> "“iPhone 8”"
--------------------------------------------------------------------------------
to stripTags from s as text
local s
# Eliminate linebreaks and join to form one line of text
set the text item delimiters to {null, linefeed, return}
set s to the text items of s as text
# Use bash to isolate all the various tags within the string
# Note: not suitable for tags with irregular content, such as
# any that unexpectedly contain '<' or '>' as part of their
# text content. However, that shouldn''t be an issue here.
do shell script "egrep -io -e '<[^>]+>' <<<" & the quoted form of s
# Use the tags as a basis for elimination using AS's TIDs
set the text item delimiters to {null} & paragraphs of the result
set s to the text items of s as text
return s
end stripTags
string1
adalah salinan variabel Anda FirstTitle
, termasuk jeda baris yang dikandungnya (saya tidak yakin apakah ini sengaja atau merupakan artefak ketika Anda menyalin skrip Anda ke browser); ada atau tidaknya mereka tidak mempengaruhi kemanjuran naskah saya, tetapi hanya mengharuskan dua baris di awal stripTags
pawang yang menghilangkannya.
string2
adalah teks yang Anda berikan di bagian bawah pertanyaan Anda.
Saya telah menunjukkan output dari masing-masing pemrosesan berikut ini. Saya mempertahankan tanda kutip ganda yang disebut "pintar" yang merupakan bagian dari string dan berbohong dengan tag; Saya memang melihat bahwa Anda telah memilih untuk menghilangkannya, tetapi kehadiran mereka di sini — hanya untuk tujuan demonstrasi — adalah jaminan visual yang bagus bahwa skrip hanya menargetkan tag, dan menyimpan teks di antaranya. Saya harap Anda tidak keberatan jika saya meninggalkan kutipan cerdas itu untuk Anda atasi sesuai keinginan.
Beri tahu saya jika Anda memiliki pertanyaan.
TAMBAH 2018-05-12:
@cjeccjec Terima kasih telah memperbarui informasi situs web dengan URL yang benar. Kiat untuk waktu berikutnya: sertakan kode yang Anda gunakan untuk mendapatkan judul. Akan lebih mudah bagi orang untuk membantu Anda dan itu akan menarik lebih banyak bantuan juga.
Untungnya, masalah ini tampaknya cukup jelas. Menggunakan getElementsByClassName()
adalah ide yang bagus, dan Anda bahkan berhasil mengidentifikasi nama kelas yang menarik term-keyword__keyword
,. Sudah selesai dilakukan dengan baik.
Elemen yang ditugaskan ke classname itu adalah <p>
elemen. Mereka memang memiliki title
properti, tetapi itu kosong, jadi saya curiga itu bukan apa yang Anda gunakan atau apa yang Anda cari sama sekali.
Mereka juga memiliki properti yang disebut textContent
, yang, seperti yang disarankan, mengembalikan teks yang terkandung dalam elemen, yaitu label item yang dibandingkan dalam game ini. Saya percaya itu yang Anda cari, dan sepenuhnya gratis dari ReactJS
tag.
Kode ini mengembalikan array textContent
properti dari tiga p.term-keyword__keyword
tag yang dimuat di situs pada satu waktu: dua saat ini terlihat dan sedang dimainkan sedang dibandingkan; dan satu layar di sebelah kanan menunggu untuk menggulir tampilan untuk perbandingan selanjutnya.
Array.from(document
.getElementsByClassName('term-keyword__keyword'),
e=>e.textContent.slice(1,-1)
);
Saya juga mengambil kebebasan memotong kutipan dari awal dan akhir teks.
Masukkan ini ke dalam AppleScript seperti:
tell application "Safari" to set labels ¬
to do JavaScript "Array.from(document" & ¬
".getElementsByClassName('term-keyword__keyword')," & ¬
"e=>e.textContent.slice(1,-1));" in the front document
--> {"Microsoft Word", "Moobs", "Malaysia"}
item 2 of labels --> "Moobs"
Itulah hasil yang saya dapatkan saat bermain game. Saya mencoba menebak apakah "Microsoft Word" atau "Moobs" memiliki lebih banyak pencarian internet, yang saya dapatkan dengan benar; kemudian "Malaysia" menggulir ke tampilan seperti yang sudah saya tahu.
Dengan menggunakan metode ini, Anda tidak perlu menghapus ReactJS
tag apa pun , maupun tanda kutip.