爬虫学习3

防盗链 

#1.拿到conyId
#2.拿到videoStatus返回的json.->srURL
#srcURL里面的内容进行整理
#下载视频

import requests

url = "https://www.pearvideo.com/video_1797054"
contId = url.split("_")[1]

videoStatusUrl = f"https://www.pearvideo.com/videoStatus.jsp?contId={contId}&mrd=0.0902521356773"
headers = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36",
    #防盗链:溯源,当前本次请求的上一级是谁
    "Referer":url
}

resp = requests.get(videoStatusUrl,headers=headers)
dic = resp.json() #从一个名为resp的响应对象中解析JSON数据,并将其存储在名为dic的变量中

srcUrl = dic['videoInfo']['videos']['srcUrl']  #这行代码从dic字典中提取videoInfo键对应的值,然后进一步从这个值中提取videos键对应的值,最后从这个值中提取srcUrl键对应的值,并将其赋值给变量srcUrl。
systemTime = dic['systemTime'] #这行代码从dic字典中提取systemTime键对应的值,并将其赋值给变量systemTime。
srcUrl = srcUrl.replace(systemTime,f"cont-{contId}")#这行代码使用replace方法将srcUrl字符串中的systemTime值替换为cont-{contId}格式的字符串。这里假设contId是一个已经定义的变量,它代表某个内容的ID

#下载视频
with open("a.mp4",mode="wb") as f: #使用with语句打开一个名为a.mp4的文件,以二进制写入模式(wb)打开。with语句确保文件在操作完成后会被正确关闭
    f.write(requests.get(srcUrl).content) #这行代码使用requests库发起一个GET请求到srcUrl指定的URL。requests.get(srcUrl)返回一个响应对象,.content属性包含了响应体的内容,即视频文件的二进制数据。然后,这些数据被写入到之前打开的文件f中。

 代理请求


import requests

url = "https://www.baidu.com"

#准备代理信息
proxy = {
    "http":"http://218.87.205.147:23322",
    "https":"https://202.101.213.61:19302"
}
#proxies代理
resp = requests.get(url,proxies=proxy)
resp.encoding = 'utf-8'
print(resp.text)
next() 函数是 Python 中的一个内置函数,用于从一个迭代器中获取下一个元素
# 列表迭代器
my_list = [1, 2, 3, 4, 5]
iterator = iter(my_list)

# 获取下一个元素
print(next(iterator))  # 输出: 1
print(next(iterator))  # 输出: 2

一个简单的spider()函数可能包含以下几个步骤:

  1. 发送HTTP请求获取网页内容。
  2. 解析网页内容(通常是HTML),提取所需数据。
  3. 存储提取的数据。
  4. 跟踪网页中的链接,继续抓取其他页面。
import requests
from bs4 import BeautifulSoup

def spider(url):
    # 发送HTTP GET请求
    response = requests.get(url)
    
    # 检查请求是否成功
    if response.status_code == 200:
        # 解析网页内容
        soup = BeautifulSoup(response.text, 'html.parser')
        
        # 提取网页中的所有链接
        links = soup.find_all('a')
        
        # 遍历链接并打印
        for link in links:
            print(link.get('href'))
    else:
        print("Failed to retrieve the webpage")

# 使用spider函数抓取指定URL的内容
spider('http://example.com')

spider()函数接受一个URL作为参数,发送HTTP GET请求,然后使用BeautifulSoup解析HTML内容,并提取所有的链接(<a>标签的href属性)。最后,函数打印出这些链接。

上一篇:AI产品经理实战手册:策略、开发与商业化指南


下一篇:重定向与缓冲区理解