提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
使用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等信息。它通常被用于爬取无需模拟用户行为的网站数据。