斗鱼房间信息自动化爬取

此处选择的网址是斗鱼绝地求生界面。使用自动化测试工具selenium,为什么选selenium而不要requests呢? 因为在翻页的时候网址不会变化,使用requests没有next_url不太方便。xpath路径最好自己写,灵活一点,F12选中元素copy xpath只能选中单个元素。
主要遇到了两个坑。一个是在加载页面和翻页的时候,要time.sleep()几秒。二是写“下一页”标签的xpath路径时,class属性中有空格,就算复制过来,空格也会自动消失,需要自己手动写。

import time
from pprint import pprint
from selenium import webdriver

class douyu(object):
    def __init__(self):
        self.start_url='https://www.douyu.com/g_jdqs'
        self.driver=webdriver.Chrome()

    def get_content_list(self):
        time.sleep(10)
        div_list=self.driver.find_elements_by_xpath('//div[@class="DyListCover-content"]')
        list=[]
        for i in div_list:
            dict = {}
            dict['anchor']=i.find_element_by_xpath('./div[2]/h2').text
            dict['people_num']=i.find_element_by_xpath("./div[2]/span").text
            dict['title']=i.find_element_by_xpath("./div[1]/h3").get_attribute('title')
            list.append(dict)
        pprint(list)

    def next_page(self):
        # 这里有个大坑!!class属性前面有空格
        self.to_next=self.driver.find_elements_by_xpath("//li[@class=' dy-Pagination-next']")
        return self.to_next

    def save_content(self):
        #保存数据自定义。上面打印出来了,不保存也没关系。
        pass

    def run(self):
        self.driver.maximize_window()
        self.driver.get(self.start_url)
        self.get_content_list()
        while self.next_page():
            self.to_next[0].click()
            time.sleep(5)
            self.get_content_list()
        self.driver.close()

if __name__ == '__main__':
    dy=douyu()
    dy.run()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值