Python3从零开始爬取今日头条的新闻【四、模拟点击切换tab标签获取内容】

Python3从零开始爬取今日头条的新闻【一、开发环境搭建】
Python3从零开始爬取今日头条的新闻【二、首页热点新闻抓取】
Python3从零开始爬取今日头条的新闻【三、滚动到底自动加载】
Python3从零开始爬取今日头条的新闻【四、模拟点击切换tab标签获取内容】
Python3从零开始爬取今日头条的新闻【五、解析头条视频真实播放地址并自动下载】


所谓爬虫,就是通过编程的方式自动从网络上获取自己所需的资源,比如文章、图片、音乐、视频等多媒体资源。通过一定的方式获取到html的内容,再通过各种手段分析得到自己所需的内容,比如通过BeautifulSoup对网页内容进行解析提取。


本文通过selenium的webdriver模拟浏览器来浏览网页,通过lxml库解析得到咱所需的内容。下面开始我们的爬虫工作。

1.目标

我们今天的目标是模拟鼠标点击tab标签切换页面内容并且自动加载多页

我们查看头条新闻某个作者的主页,查看作者的视频列表,首先我们来找个目标,比如打开详情:《***号召“做一颗永不生锈的螺丝钉”》
在这里插入图片描述我们点这个新华网,进去他的主页
在这里插入图片描述
我们的目标是视频这个页签的内容,把这个也签视频列表抓取出来,以便我们下一步解析视频地址、自动下载视频资源。
但是这里打开主页,默认都是打开文章页签的,我们需要模拟鼠标点击实现视频页签切换、下滑加载更多。

2.实现

打开主页等待新闻加载完成
在这里插入图片描述
我们观察这个页面的dom元素特性,页面加载出来的新闻,还是ul标签里面的li布局,liclassga_event都是一样的,通过这个特性,实现我们的等待页面加载完成,再进行tab页签点击切换。

等待页面加载完成的关键代码:
# 浏览器打开页面
self.__browser.get(url)

try:
   # 此处等到我们所需的热文元素加载出来了再进行下一步,避免页面还没加载完成就去解析内容导致内容为空
   element = WebDriverWait(self.__browser, 10).until(
       EC.presence_of_element_located((By.XPATH,'"//ul/li[@ga_event="feed_item_click"]'))
   )
except Exception as ex:
   print(ex)
finally:
   pass
分析下顶部页签区域元素特点,我们可以通过id=wrapper来定位tab页签所在的祖父级布局,
最后定位到视频这个页签,相应的xpath为:

‘//*[@id=“wrapper”]/div[2]/div[1]/ul/li[2]’
在这里插入图片描述

通过xpath找到视频页签的页面元素,调用click事件就可以实现页签切换,关键代码:
    video_element = self.__browser.find_element_by_xpath('//*[@id="wrapper"]/div[2]/div[1]/ul/li[2]')
    video_element.click()

当切换视频页签后,需要等待加载出来第一页的视频列表后才能进行下一步,我们观察下正常的视频页签加载完成列表时的布局如下图:
在这里插入图片描述
由上图可知只要浏览器能找到这个元素属性值,就表示加载完成了,相应的xpath为:'//div[ga_event="video_title_click"]',所以我们的代码如下:

    video_element = self.__browser.find_element_by_xpath('//*[@id="wrapper"]/div[2]/div[1]/ul/li[2]')
    video_element.click()
    try:
        element = WebDriverWait(self.__browser, 10).until(
            EC.presence_of_element_located((By.XPATH, '//div[ga_event="video_title_click"]'))
        )
    except Exception as ex:
        pass
    finally:
        pass

好了,最后一步,模拟滚动条滚动到底加载多页视频新闻,原理跟之前的《Python3从零开始爬取今日头条的新闻【三、滚动到底自动加载】》一样,这里不重复了。


全文完结,后续实现用其它框架来爬虫新闻资源。敬请期待~


Python3从零开始爬取今日头条的新闻【一、开发环境搭建】
Python3从零开始爬取今日头条的新闻【二、首页热点新闻抓取】
Python3从零开始爬取今日头条的新闻【三、滚动到底自动加载】
Python3从零开始爬取今日头条的新闻【四、模拟点击切换tab标签获取内容】
Python3从零开始爬取今日头条的新闻【五、解析头条视频真实播放地址并自动下载】


参考资料:

[1]: XPath语法参考
[2]: 廖雪峰老师的Python3 在线学习手册
[3]: Python3官方文档
[4]: 菜鸟学堂-Python3在线学习
[5]: 其他所有分享过python学习填坑网友的经验

转载于:https://www.cnblogs.com/xiaocy66/p/10589235.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值