音乐

#https://music.163.com/discover/toplist?id=3778678
#http://music.163.com/song/media/outer/url?id=26305541.mp3
import os

import requests

#导入解析包
from bs4 import BeautifulSoup
#创建beautifulsoup解析对象


headers = {

    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"

}

# 3778678 热歌榜

def get_id(num):
    if num.strip() == '':
        music_list = '3778678'
    else:
        music_list = num

    url = f'https://music.163.com/discover/toplist?id={music_list}'


    res = requests.get(url,headers=headers).text

    soup = BeautifulSoup(res, 'html.parser')
    id = soup.find('ul',class_='f-hide').find_all('a')

    num_list = []
    i_list = []

    for i in id:

            num = i['href'].split('=')[1]
            # num_list.append(num)
            # i_list.append(i.text)



            if len(num) > 1 :
                url = f"http://music.163.com/song/media/outer/url?id={num}.mp3"
                musci_url = requests.get(url,headers=headers).content

                if not os.path.exists(f'music/{music_list}'):
                    os.mkdir(f'music/{music_list}')
                print(f"目前正在下载: {i.text}")
                with open(rf'music/{music_list}/' + i.text + '.mp3', 'wb') as f:
                    f.write(musci_url)

    #return num_list,i_list





if __name__ == '__main__':
    get_id(input("请输入歌单id  (不输入默认为热歌榜单):"))







DrissionPage操作浏览器自动获取cookie
import time
import DrissionPage
from DrissionPage import ChromiumPage,ChromiumOptions
from DrissionPage.errors import ElementNotFoundError

#https://www.drissionpage.cn/browser_control/get_elements/syntax/#-class-%E5%8C%B9%E9%85%8D%E7%AC%A6-
#page.ele(".itemBox___DjR2j").click() class匹配 
#xpath也好用直接在f12的Elements右键copy里面的xpath即可 语法ele('xpath:/html/body/div[3]/div/ul/li[3]').click()
#time.sleep(1)
#DrissionPage               4.0.5.6
# 创建ChromiumPage对象时会在指定端口启动浏览器,或接管该端口已有浏览器。
# 默认情况下,程序使用 9222 端口 
def Cookie(url):
    co = ChromiumOptions().headless(False)

    page = ChromiumPage(co)


    try:
        time.sleep(3)
        page.get(
            url,
            retry=99, show_errmsg=True, timeout=10)
        cookie = page.cookies(as_dict=True)

       

        return cookie,page
    except ElementNotFoundError as  e:
        print('忽略', e)

        cookie = page.cookies(as_dict=True)
        return cookie
 



if __name__ == "__main__":
    cookie = Cookie('https://kyfw.12306.cn/otn/leftTicket/queryG')
    
车票
import requests
from prettytable import PrettyTable

header = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0",
    "referer": "https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=dc",
    "Cookie": "_uab_collina=172526223226212764421464; JSESSIONID=07534181F9679204F8CF57257BA0E946; _jc_save_fromStation=%u6210%u90FD%2CCDW; _jc_save_wfdc_flag=dc; _jc_save_toStation=%u6C5F%u6CB9%2CJFW; route=6f50b51faa11b987e576cdb301e545c4; BIGipServerotn=2129133834.64545.0000; BIGipServerpassport=887619850.50215.0000; guidesStatus=off; highContrastMode=defaltMode; cursorStatus=off; _jc_save_fromDate=2024-09-23; _jc_save_toDate=2024-09-23"
}
#可以通过DrissionPage操作浏览器自动获取cookie

params={

    'leftTicketDTO.train_date': '2024-09-30',
    'leftTicketDTO.from_station': 'CDW',
    'leftTicketDTO.to_station': 'JFW',
    'purpose_codes': 'ADULT'
}
#https://kyfw.12306.cn/otn/leftTicket/queryG
url="https://kyfw.12306.cn/otn/leftTicket/queryG"

re=requests.get(url,headers=header,params=params)



pt = PrettyTable()
pt.field_names = [
        "序号",
        "车次",
        "出发时间",
        "到达时间",
        "历时时间",
        "一等座",
        "二等座",
        "硬卧",
        "无座"
]


rej=re.json()['data']['result']

num=0
for i in rej:
    index = i.split('|')
    num += 1
    train_num = index[3]
    start_time = index[8]
    end_time = index[9]
    last_time = index[10]
    one_seat = index[31]
    two_seat = index[30]
    no_swat = index[26]
  #  soft_sleeper = index[]
    hard_sleeper = index[28]

    # print(index)
    dist = {
          "序号": num,
          "车次": train_num,
          "出发时间": start_time,
          "到达时间": end_time,
          "历时时间": last_time,
          "一等座": one_seat,
          "二等座": two_seat,
          "硬卧": hard_sleeper,
          "无座": no_swat
}
    pt.add_row([
         num,
         train_num,
         start_time,
         end_time,
         last_time,
         one_seat,
         two_seat,
         hard_sleeper,
         no_swat
    ])
print(pt)


图片(借鉴别人的)

# -*- coding: UTF-8 -*-"""
import requests
import tqdm


def configs(search, page, number):
    """

    :param search:
    :param page:
    :param number:
    :return:
    """
    url = 'https://image.baidu.com/search/acjson'
    params = {
        "tn": "resultjson_com",
        "logid": "11555092689241190059",
        "ipn": "rj",
        "ct": "201326592",
        "is": "",
        "fp": "result",
        "queryWord": search,
        "cl": "2",
        "lm": "-1",
        "ie": "utf-8",
        "oe": "utf-8",
        "adpicid": "",
        "st": "-1",
        "z": "",
        "ic": "0",
        "hd": "",
        "latest": "",
        "copyright": "",
        "word": search,
        "s": "",
        "se": "",
        "tab": "",
        "width": "",
        "height": "",
        "face": "0",
        "istype": "2",
        "qc": "",
        "nc": "1",
        "fr": "",
        "expermode": "",
        "force": "",
        "pn": str(60 * page),
        "rn": number,
        "gsm": "1e",
        "1617626956685": ""
    }
    return url, params


def loadpic(number, page):
    """

    :param number:
    :param page:
    :return:
    """
    while (True):
        if number == 0:
            break
        url, params = configs(search, page, number)
        result = requests.get(url, headers=header, params=params).json()
        url_list = []
        for data in result['data'][:-1]:
            url_list.append(data['thumbURL'])
        for i in range(len(url_list)):
            getImg(url_list[i], 60 * page + i, path)
            bar.update(1)
            number -= 1
            if number == 0:
                break
        page += 1
    print("\nfinish!")


def getImg(url, idx, path):
    """

    :param url:
    :param idx:
    :param path:
    :return:
    """
    img = requests.get(url, headers=header)
    file = open(path + 'main_' + str(idx + 1) + '.jpg', 'wb')
    file.write(img.content)
    file.close()


if __name__ == '__main__':
    search = input("请输入搜索内容:")
    number = int(input("请输入需求数量:"))
    path = 'D:\\photo/'
    header = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36'}

    bar = tqdm.tqdm(total=number)
    page = 0
    loadpic(number, page)


邮箱提醒

import smtplib
from email.header import Header  # 用来对Email主题进行编码
from email.mime.text import MIMEText  # 用来构造文本
from email.mime.image import MIMEImage  # 用来构造图片
from email.mime.multipart import MIMEMultipart  # 用来构造多个对象,如文本、图片、文件等
from email.mime.application import MIMEApplication  # 多种附件类型使用
from email.utils import formataddr


def mail(subject, message):
    # 创建邮件内容对象,参数对应内容、类型(plain文本、html超文本、邮件对象.attach(附件))、编码
    msg = MIMEText(message, 'plain', 'utf-8')
    # 邮件主题,将邮件标题转换成标准Email格式
    msg['Subject'] = Header(subject, 'utf-8').encode()
    # 发件人邮箱昵称、发件人邮箱账号
  #  msg['From'] = formataddr((Header('name', 'utf-8').encode(), "test@126.com"))
    # 收件人邮箱昵称、收件人邮箱账号(多个Email地址,用逗号隔开)
  #  msg['To'] = formataddr((Header('name', 'utf-8').encode(), "test@126.com"))
    # 抄送列表(多个Email地址,用逗号隔开)
  #  msg['Cc'] = formataddr((Header('name', 'utf-8').encode(), cc_addrs))

    try:
        # 通过SMTP_SSL登录SMTP服务器,创建SMTP邮件对象
        server = smtplib.SMTP_SSL("smtp.126.com", 465)
        # 使用授权码登录邮箱
        server.login("test@126.com", "test")
        # 发送邮件:as_string()会将整个Email内容转换为字符串,第二个参数可以以列表的方式写多个
        server.sendmail("test@126.com", "test@126.com",msg.as_string())


        # 关闭连接
        server.quit()
        print('发送成功!')
    except Exception as e:
        print(f'发送失败: {e}')

if __name__ == "__main__":
  mail("主题","内容")

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐