Apabila saya merangkak halaman web, saya perhatikan bahawa perubahan halamannya dilaksanakan oleh fungsi sedemikian Selepas membelok halaman, URL halaman tidak berubah:
<input class="buttonJump" name="goto2" onclick="dirGroupMblogToPage(document.getElementById('dirGroupMblogcp2').value)" type="button" value="Go"/>
</input>
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="******"):
# 實現(xiàn)登錄, 返回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?
Following the voice in heart.
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). . . .
from selenium import webdriver
# from selenium.webdriver.common.keys import Keys
#driver = webdriver.PhantomJS(executable_path="D:\phantomjs-2.1.1-windows\bin\phantomjs")
# 我的windows 已配置環(huán)境變量,不需指定 executable_path,使用 Chrome需要對應的瀏覽器以及驅動程序
driver = webdriver.Chrome()
# url 為你需要加載的頁面url
url = 'http://sns.icourses.cn/*****'
# 打開頁面
driver.get(url)
# 在你的例子中,是需要點擊 button ,通過class 屬性獲取到button,然后執(zhí)行單擊 .click()
# 如果需要準確定位,可以自行搜索其他的 find_
driver.find_element_by_class_name("buttonJump").click()
# selenium webdriver 還有很多其它高級的用法,自行谷歌,你這個問題,搜索應該是能得到答案的,
Terdapat beberapa situasi,
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.