python 爬取鬥魚 Ajax動態載入js分頁 使用phontomjs無介面瀏覽器
阿新 • • 發佈:2019-02-09
python2.7版本
#coding:utf8 import unittest from selenium import webdriver from bs4 import BeautifulSoup as bs class douyu(unittest.TestCase): # 初始化方法,必須是setUp() def setUp(self): self.driver = webdriver.PhantomJS() self.num = 0 self.count = 0 # 測試方法必須有test字樣開頭 def testDouyu(self): self.driver.get("https://www.douyu.com/directory/all") while True: soup = bs(self.driver.page_source, "lxml") # 房間名, 返回列表 names = soup.find_all("h3", {"class" : "ellipsis"}) # 觀眾人數, 返回列表 numbers = soup.find_all("span", {"class" :"dy-num fr"}) #主播id peoples = soup.find_all("span", {"class": "dy-name ellipsis fl"}) # zip(names, numbers) 將name和number這兩個列表合併為一個元組 : [(1, 2), (3, 4)...] for name, number,people in zip(names, numbers,peoples): print u"觀眾人數: -" + number.get_text().strip() + u"-\t房間名: " + name.get_text().strip() + u"-\t主播名: " + people.get_text().strip() self.num += 1 #self.count += int(number.get_text().strip()) # 如果在頁面原始碼裡找到"下一頁"為隱藏的標籤,就退出迴圈 if self.driver.page_source.find("shark-pager-disable-next") != -1: break # 一直點選下一頁 self.driver.find_element_by_class_name("shark-pager-next").click() # 測試結束執行的方法 def tearDown(self): # 退出PhantomJS()瀏覽器 print "當前網站直播人數" + str(self.num) print "當前網站觀眾人數" + str(self.count) self.driver.quit() if __name__ == "__main__": # 啟動測試模組 unittest.main()
執行完結果: