当前位置:   article > 正文

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

python 如何爬取点击tab的内容

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


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


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

1.目标

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

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

2.实现

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

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

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

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

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

  1. video_element = self.__browser.find_element_by_xpath('//*[@id="wrapper"]/div[2]/div[1]/ul/li[2]')
  2. video_element.click()
  3. try:
  4. element = WebDriverWait(self.__browser, 10).until(
  5. EC.presence_of_element_located((By.XPATH, '//div[ga_event="video_title_click"]'))
  6. )
  7. except Exception as ex:
  8. pass
  9. finally:
  10. 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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/958687
推荐阅读
相关标签
  

闽ICP备14008679号