知识点讲解五:处理js异步加载问题
生活随笔
收集整理的這篇文章主要介紹了
知识点讲解五:处理js异步加载问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 前言
- 環境
- 代碼思路
- 原代碼
前言
在新聞網站中大多采用的是異步加載模式,新聞條目會隨滾動條的滾動而逐漸加載。當爬蟲訪問這類網站時得到的HTML數據僅僅是我們看到的頁面數據,只有當我們向下滾動時,網頁的源代碼才會同步更新。例如:騰訊新聞,處理這類JS異步加載的問題,這里用selenium來解決。
環境
- Python 3.6.5
- 需要安裝的包:selenium
- 編譯器:sublime text 3
代碼思路
導入需要用到的Python包
import selenium,time from selenium import webdriver用打開瀏覽器
driver = webdriver.Chrome(executable_path='chromedriver.exe')輸入我們需要爬取的網站
driver.get("https://new.qq.com/ch/milite/")如果程序執行錯誤,瀏覽器沒有打開,那么應該是沒有裝 Chrome 瀏覽器或者 Chrome 驅動沒有配置在環境變量里。下載驅動,然后將驅動文件路徑配置在環境變量即可。
驅動器下載傳送門
將網頁的滾動條拉到底部,觸發JS加載新數據
jsCode = "var q=document.documentElement.scrollTop=100000" driver.execute_script(jsCode)休息3秒,從JS異步加載的完成到新聞頁面的更新需要一些時間
time.sleep(3)進行標簽定位,定位到class="item-pics"的標簽
div = driver.find_elements_by_class_name("item-pics") for each in div:each = each.find_element_by_tag_name("a")打印爬取到的內容
print(each.text)原代碼
#這是一個軍事新聞數據采集腳本 import selenium,time from selenium import webdriverif __name__ == '__main__':driver = webdriver.Chrome(executable_path='chromedriver.exe')driver.get("https://new.qq.com/ch/milite/") for each in range(1,10):jsCode = "var q=document.documentElement.scrollTop=100000"driver.execute_script(jsCode)time.sleep(3)print(each)time.sleep(3)div = driver.find_elements_by_class_name("item-pics")for each in div:each = each.find_element_by_tag_name("a")print(each.text)總結
以上是生活随笔為你收集整理的知识点讲解五:处理js异步加载问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git学习记录
- 下一篇: 机器学习第1天:数据预处理