Python提取斗鱼美女图片--selenium requests两种方式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

使用selenium,requests提取斗鱼美女数据

数据来源 斗鱼美女链接

一、selenium是干嘛的,与request的区别

Selenium和Requests是两种不同的Python库,它们各自用于不同的任务:

- Selenium是一个自动化测试工具,可以模拟用户在Web浏览器中的操作,包括点击、输入文本、提交表单等。它通常被用于爬取需要模拟用户行为才能访问的网站数据,比如需要登录才能访问的网站。

- Requests是一个用于HTTP请求的Python库。它可以发送GET、POST、PUT、DELETE等请求,并支持向HTTP请求中添加header、cookies等信息。它通常被用于爬取无需模拟用户行为的网站数据。

因此,Selenium 和 Requests 有以下区别:

- 任务领域不同:Selenium用于模拟用户在Web浏览器中的操作,Requests用于HTTP请求。
- 爬取方式不同:Selenium模拟用户在Web浏览器中的操作,可以模拟点击按钮、输入文本等操作;Requests则只是发起HTTP请求,不能进行类似的操作。
- 应用场景不同:Selenium主要用于爬取需要模拟用户行为才能访问的网站数据,Requests主要用于爬取无需模拟用户行为的网站数据。

在实际应用中,需要根据具体情况选择使用Selenium还是Requests,或者结合两种库进行使用。

二、数据的查看

1.查看美女图片所在的路径

 打开控制台数据(页面右击检查,点击元素出现以下页面) 

我们发现数据应该在ul列表标签下的li中,接下来,可以开始写代码了 

2.selenium操作第一页

代码如下(示例):

import json
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.edge.options import Options
from selenium.webdriver.edge.service import Service
import requests


# todo 每隔7一次循环
options = Options ()
options.add_argument ("--headless")
driver = webdriver.Edge (
    options=options,
    service=Service (executable_path=r'D:\pythonProject\爬虫\seleniumDemo\sserver\msedgedriver.exe')
)


# # todo 提取第一页的所有数据
def getValuesFromUrl():
    driver.get ('https://www.douyu.com/g_xingxiu')
    # 获取所有的li标签
    val = driver.find_elements (by=By.CLASS_NAME,
                               value=f'layout-Cover-item')
    for i in range (0, len(val)):
        data=val[i]
        img_source=data.find_elements(by=By.TAG_NAME,value="source")[1].get_attribute("srcset")
        print(f"第{i+1}张图片",img_source)

 但是,使用selenium并不能异步计算后序其他页面的数据

3.使用reques获取数据

点击网络的Fetch/XHR,并且在页面中点击第二页,找到名称数据中正确请求的数据

 

 

找到这个数据对应的异步请求网页

 

异步提交的python代码

# 异步传输
# 分页数据
def testByRequest():
    for j in range(1,5):
        url=f'https://www.douyu.com/wgapi/ordnc/live/web/room/mixList/2/1008/0/{j}'
        # 获取所有的li标签
        data=requests.get(url).text
        base=json.loads(data)
        # 获取图片
        base=base['data']['rl']
        for i in range(1,len(base)):
            img=base[i]['rs_ext'][-1]['rs16']
            print(f"第{j}页第{i}张图片为",img)

if __name__ == '__main__':
    testByRequest()

 结果如下

 

总结

Selenium和Requests是两种不同的Python库,它们各自用于不同的任务:

- Selenium是一个自动化测试工具,可以模拟用户在Web浏览器中的操作,包括点击、输入文本、提交表单等。它通常被用于爬取需要模拟用户行为才能访问的网站数据,比如需要登录才能访问的网站。

- Requests是一个用于HTTP请求的Python库。它可以发送GET、POST、PUT、DELETE等请求,并支持向HTTP请求中添加header、cookies等信息。它通常被用于爬取无需模拟用户行为的网站数据。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值