當(dāng)前位置:
首頁 >
爬虫——模拟点击动态页面
發(fā)布時(shí)間:2024/4/17
32
豆豆
生活随笔
收集整理的這篇文章主要介紹了
爬虫——模拟点击动态页面
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
動(dòng)態(tài)頁面的模擬點(diǎn)擊:
以斗魚直播為例:http://www.douyu.com/directory/all
爬取每頁的房間名、直播類型、主播名稱、在線人數(shù)等數(shù)據(jù),然后模擬點(diǎn)擊下一頁,繼續(xù)爬取
#!/usr/bin/python3 # -*- coding:utf-8 -*- __author__ = 'mayi'""" 動(dòng)態(tài)頁面的模擬點(diǎn)擊:模擬點(diǎn)擊斗魚直播:http://www.douyu.com/directory/all爬取每頁房間名、直播類型、主播名稱、在線人數(shù)等數(shù)據(jù),然后模擬點(diǎn)擊下一頁,繼續(xù)爬取 """from selenium import webdriver import json# 調(diào)用環(huán)境變量指定的PhantomJS瀏覽器創(chuàng)建瀏覽器對(duì)象,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)# 循環(huán)處理每一頁,直至最后一頁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')# 處理每一個(gè)房間for live in live_list:# 房間名、直播類型、主播名稱、在線人數(shù)# 房間名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()# 在線人數(shù)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["在線人數(shù)"] = 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()未找到內(nèi)容則返回-1if self.driver.page_source.find('shark-pager-disable-next') != -1:# 已到最后一頁break# 模擬點(diǎn)擊下一頁self.driver.find_element_by_class_name('shark-pager-next').click()# 爬蟲結(jié)束前關(guān)閉文件self.file_name.write("\n]")self.file_name.close()if __name__ == '__main__':douyu = DouyuSpider()douyu.run()?
轉(zhuǎn)載于:https://www.cnblogs.com/mayi0312/p/7236472.html
總結(jié)
以上是生活随笔為你收集整理的爬虫——模拟点击动态页面的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL双主(主主)架构方案
- 下一篇: 怎么新建网页文件