Apabila saya merangkak halaman web, saya perhatikan bahawa perubahan halamannya dilaksanakan oleh fungsi sedemikian Selepas membelok halaman, URL halaman tidak berubah:
function dirGroupMblogToPage(currentPage){ jQuery.post("dirGroupMblog.action", {"page.currentPage":currentPage,gid:MI.TalkBox.gid}, function(data){$("#talkMain").html(data); window.scrollTo(0, $css.getY(MI.talkList._body)-65); }); }
Menulis fungsi seperti ini untuk cuba mencapai perubahan halaman:
def login_page(login_url, content_url, usr_name="******@126.com", passwd="******"): # 实现登录, 返回Session对象和获得的页面 post_data = {'r': 'on', 'u': usr_name, 'p': passwd} s = requests.Session() s.post(login_url, post_data) r = s.get(content_url) return s, r def turn_page(s, next_page, content_url): post_url = "http://sns.icourses.cn/dirGroupMblog.action" post_headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36", "X-Requested-With":"XMLHttpRequest"} post_data = {"page.currentPage": next_page, "gid": 2632} s.post(post_url, data=post_data, headers = post_headers) res = s.get(content_url) return res
Tetapi penukaran halaman gagal selepas memanggil turn_page(). Bagaimana kita harus menyelesaikan masalah ini? Juga, apakah jenis pengetahuan yang perlu kita pelajari untuk menyelesaikan masalah seperti ini?
Disyorkan menggunakan selenium
Sebagai contoh, jika anda perlu mengklik butang halaman seterusnya pada antara muka, atau anda perlu memasukkan kekunci atas, bawah, kiri dan kanan, halaman itu boleh diputar, pemacu web selenium boleh melakukannya dan memberi rujukan (Saya pernah merangkak novel laman web Cina Qidian )
Selenium boleh berinteraksi dengan halaman, klik, dwiklik, masuk, tunggu halaman dimuatkan (penantian tersirat, dan tunggu eksplisit). . . .
Terdapat beberapa situasi,
Anda boleh menggunakan analisis rangkaian dalam alat pembangun Chrome untuk mendapatkan hasil, sama ada halaman html atau pemaparan json maklum balas.1 Halaman boleh diputar dengan meluncur atau mengklik melalui kesan js
2
json lebih mudah dikendalikan, hanya dapatkan hasilnya secara terus. Halaman html biasa perlu menggunakan pemadanan biasa dengan pemisah halaman. Kemudian masukkan pautan ke dalam kolam untuk dirangkak.
/a/11...