處理JS分頁載入的網頁_recv

wanghandou發表於2017-10-28
# # shark-pager-next
# # h3 class:ellipsis
# # span class:dy-num fr
# # shark-pager-disable-next
from selenium import webdriver
from bs4  import BeautifulSoup as bs
import unittest
class douyu(unittest.TestCase):
	#初始化方法
	def setUp(self):
		self.driver=webdriver.PhantomJS()
		self.count=0
	#測試方法必須有text字樣開頭
	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"})
			#zip(names,numbers)將names和numbers這兩個列表合併為一個元組:[(1,2),(3,4)....]
			for name,number in zip(names,numbers):
				print ("觀眾人數: "+number.get_text().strip()+"  "+"\t房間名: "+name.get_text().strip()).encode("gb18030")
				self.count=self.count+1
			#如果在頁面上原始碼裡面找到“下一頁”為隱藏的標籤,就退出迴圈(因為“下一頁”就按不動例如)
			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):
		print u"此網站的視訊"+str(self.count)
		#退出PhantomJS瀏覽器
		self.driver.quit()
if __name__=="__main__":
	unittest.main()

爬鬥魚頁面上每個房間,和每個房間的訪問人數。每次按下一頁的時候都要得到

相關文章