博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
斗鱼爬虫,爬取颜值频道的主播图片和名字
阅读量:4654 次
发布时间:2019-06-09

本文共 1750 字,大约阅读时间需要 5 分钟。

在斗鱼的界面中,如果滚动条没有拉下去,那么下面的图片都只是一条鱼的图片,所以要使浏览器自动拉动滚动条,可以用到python的selenium库,

1、配置浏览器

要使用selenium,还需要安装 chromedriver.exe,这里是使用Chrome浏览器,首先在https://npm.taobao.org/mirrors/chromedriver下这个网址中下载适合自己浏览器版本的chromedriver.exe,然后安装在Chrome浏览器的根目录下

2使用selenium库,获取斗鱼直播的整个页面

自动打开Chrome浏览器,然后进入斗鱼直播网页并使页面最大化,再实现自动拉动滚轮的方法来获取整个直播页面

1482504-20190722224218467-1695340180.png

1482504-20190722224442225-1806153003.png

在浏览器按F12进入检查模式,可以看到所有的主播页面都在class="layout-Cover-list"的ul标签下的li标签中,

1482504-20190722224627512-1654913106.png

所以可以这样来获取数据

1482504-20190722224957903-935933014.png

3、获取图片链接和主播名字

找到图片所在的位置,在每个class ="DyImg-content is-normal " 的src标签中

1482504-20190722225216608-1310256393.png

名字在每个class =class="DyListCover-user" d的h2中

1482504-20190722225803752-2061548832.png

4、将得到的图片和名字保存到本地

因为得到的图片链接可能有些不必要的必要,所以用正则表达式,只匹配到有用的地方,再保存下来,

1482504-20190722230229743-1825436328.png

5、完整代码

import reimport requestsfrom selenium import webdriverimport time# 1. 准备urlurl = 'https://www.douyu.com/g_yz'# 2. 获取element对象,Chrome后面是chromedriver.exe安装的根目录driver = webdriver.Chrome('C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe')driver.get(url)time.sleep(1)# 3.加载页面# 页面最大化driver.maximize_window()# 拉动滚动条for i in range(16):    time.sleep(1)    driver.execute_script("window.scrollBy(0, 500)")# 4. 获取数据lis = driver.find_elements_by_xpath('//ul[@class="layout-Cover-list"]/li')# 5.发送请求保存图片for li in lis:    url = li.find_element_by_xpath('.//img[@class="DyImg-content is-normal "]').get_attribute("src")    name = li.find_element_by_xpath('.//h2[@class="DyListCover-user"]').text    try:        url = re.match(".*\.jpg", url).group()        response = requests.get(url)        with open("./img/" + name + ".jpg", "wb") as f:            f.write(response.content)    except:        url = re.match(".*\.png", url).group()        response = requests.get(url)        with open("./img/" + name + ".png", "wb") as f:            f.write(response.content)    print(name)    print(url)# 6.退出/下一页driver.close()

结果图

1482504-20190722230927862-1833894861.png

转载于:https://www.cnblogs.com/Dandelion-L/p/11229109.html

你可能感兴趣的文章
windbg cs
查看>>
maven配置【转载】
查看>>
洛谷—— P1080 国王游戏
查看>>
Django框架介绍
查看>>
居中问题(水平居中和垂直居中)
查看>>
二叉查找树的实现
查看>>
关于cshtml中的js对动态编译支持的问题
查看>>
SQL语句优化
查看>>
CSS中 常见中文字体的英文名称
查看>>
eclipse 配置mapreduce环境出错
查看>>
Distinct Subsequences
查看>>
Reconstruct Itinerary
查看>>
Error与Exception的区别
查看>>
寒假瞎搞系列(6)
查看>>
Django1.10文档学习笔记五
查看>>
UVAlive4080_Warfare And Logistics
查看>>
前端自动化
查看>>
javascript中常见的几种循环遍历
查看>>
Linux多线程编程阅读链接
查看>>
WMAppManifest.xml
查看>>