爬虫——模拟点击动态页面
生活随笔
收集整理的這篇文章主要介紹了
爬虫——模拟点击动态页面
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
動態頁面的模擬點擊:
以斗魚直播為例:http://www.douyu.com/directory/all
爬取每頁的房間名、直播類型、主播名稱、在線人數等數據,然后模擬點擊下一頁,繼續爬取
#!/usr/bin/python3 # -*- coding:utf-8 -*- __author__ = 'mayi'""" 動態頁面的模擬點擊:模擬點擊斗魚直播:http://www.douyu.com/directory/all爬取每頁房間名、直播類型、主播名稱、在線人數等數據,然后模擬點擊下一頁,繼續爬取 """from selenium import webdriver import json# 調用環境變量指定的PhantomJS瀏覽器創建瀏覽器對象,executable_path:指定PhantomJS位置 driver = webdriver.PhantomJS(executable_path = r"D:\Program Files\phantomjs\bin\phantomjs") from bs4 import BeautifulSoupclass DouyuSpider(object):"""爬蟲類"""def __init__(self):self.url = "http://www.douyu.com/directory/all/"self.driver = webdriver.PhantomJS()self.file_name = open("douyu.json", "w", encoding = "utf-8")def run(self):"""爬蟲開始工作"""self.driver.get(self.url)# 循環處理每一頁,直至最后一頁page = 1start_flag = Truewhile True:# 等待3秒,防止訪問過于頻繁self.driver.implicitly_wait(3)print("正在處理第" + page + "頁......")page += 1# 解析soup = BeautifulSoup(self.driver.page_source, "lxml")# 在線直播部分online_live = soup.find_all('ul', {'id': 'live-list-contentbox'})[0]# 房間列表live_list = online_live.find_all('li')# 處理每一個房間for live in live_list:# 房間名、直播類型、主播名稱、在線人數# 房間名home_name = live.find_all('h3', {'class': 'ellipsis'})[0].get_text().strip()# 直播類型live_type = live.find_all('span', {'class': 'tag ellipsis'})[0].get_text().strip()# 主播名稱anchor_name = live.find_all('span', {'class': 'dy-name ellipsis fl'})[0].get_text().strip()# 在線人數online_num = live.find_all('span', {'class' :'dy-num fr'})[0].get_text().strip()# print(home_name, live_type, anchor_name, online_num)item = {}item["房間名"] = home_nameitem["直播類型"] = live_typeitem["主播名稱"] = anchor_nameitem["在線人數"] = online_numif start_flag:start_flag = Falsecontent = "[\n" + json.dumps(item)else:content = ",\n" + json.dumps(item)self.file_name.write(content)# page_source.find()未找到內容則返回-1if self.driver.page_source.find('shark-pager-disable-next') != -1:# 已到最后一頁break# 模擬點擊下一頁self.driver.find_element_by_class_name('shark-pager-next').click()# 爬蟲結束前關閉文件self.file_name.write("\n]")self.file_name.close()if __name__ == '__main__':douyu = DouyuSpider()douyu.run()?
轉載于:https://www.cnblogs.com/mayi0312/p/7236472.html
總結
以上是生活随笔為你收集整理的爬虫——模拟点击动态页面的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL双主(主主)架构方案
- 下一篇: 怎么新建网页文件