爬虫——模拟点击动态页面

动态页面的模拟点击:

以斗鱼直播为例: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 BeautifulSoup

class 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 = 1
        start_flag = True
        while 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_name
                item["直播类型"] = live_type
                item["主播名称"] = anchor_name
                item["在线人数"] = online_num
                if start_flag:
                    start_flag = False
                    content = "[\n" + json.dumps(item)
                else:
                    content = ",\n" + json.dumps(item)
                self.file_name.write(content)
            # page_source.find()未找到内容则返回-1
            if 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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python爬虫可以模拟用户登录,以获取需要登录后才能访问的页面信息。模拟登录的步骤可以总结为以下几个步骤: 1. 找到登录请求:首先,需要到登录页面的请求链接,可以通过查看网页源代码或使用开发者工具来获取该信息。 2. 分析表单:在登录页面中,通常会有一个表单用于输入用户名和密码。需要分析该表单的结构,包括表单的URL、请求方式(POST或GET)、表单字段的名称等。 3. 提取加密信息:有些网站会对登录信息进行加密,例如使用RSA或MD5等算法。如果加密信息可被破解,可以提取加密信息并进行解密。如果无法破解,可能需要放弃模拟登录。 4. 构造表单访问:使用Python的网络请求库(如requests)发送一个带有正确登录信息的表单请求。在请求中,需要将用户名和密码以及其他必要的登录信息作为表单数据发送给服务器。 通过以上步骤,可以实现Python爬虫模拟用户登录。具体实现的代码和方法可以参考相关的教程和文档,如参考链接所示的CSDN博客文章[2]。请注意,在进行爬虫时,应遵守相关网站的服务条款和法律法规,确保合法合规地进行数据获取。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [python爬虫——模拟登陆](https://blog.csdn.net/qq_16121469/article/details/127718925)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [python爬虫基础(7:模拟登录)](https://blog.csdn.net/Jeeson_Z/article/details/81457337)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值