Python课程内容回顾

Python课程内容回顾

今天Python实训课主要讲了爬虫的相关操作,主要是爬取百度小说西游记的内容和爬取网易云热歌排行榜的音乐:

爬取百度小说西游记
# -*- codeing = utf-8 -*-
# @Time : 2022/4/25 14:38
# @Author : 刘相圳
# @File : model1.py
# @Software : PyCharm
# --- 模拟浏览器向服务器发送请求
'''
软工实训课内容
'''
# 导入该库
import requests
import time
# 1.缺确定待访问网站的url
url = "http://dushu.baidu.com/api/pc/getCatalog?data={%22book_id%22:%224306063500%22}"
# 2.向目标服务器发送请求
resp1 = requests.get(url)
# 3.接收服务器返回的请求资源
# .text  把返回的内容变成字符串
print(resp1)
data1 = resp1.json() # 将返回的内容变成字典
print(data1)
print(type(data1))
titleList = data1["data"]["novel"]["items"]
print(titleList)
for x in titleList:
    url1 = "http://dushu.baidu.com/api/pc/getChapterContent?data={%22book_id%22:%224306063500%22,%22cid%22:%224306063500|"+x["cid"]+"%22,%22need_bookinfo%22:1}"
    time.sleep(1) # 添加休眠时间,防止短时间对服务器访问过于频繁,被服务器鉴定为爬虫程序(防止小型服务器崩溃)
    # print(url1)
    resp2 = requests.get(url1)
    data2 = resp2.json()
    text1 = data2["data"]["novel"]["content"]
    # print(data2)
    print(text1)
    path = "D:\\Desktop\\西游记\\"+x["title"]+".txt"
    with open(path,'w',encoding='utf8') as f:
        f.write(text1)
    print("================",x["title"]+"下载完成!====================")
爬取网易云音乐热歌榜
# -*- codeing = utf-8 -*-
# @Time : 2022/4/25 16:31
# @Author : 刘相圳
# @File : model2.py
# @Software : PyCharm

import requests
from lxml import etree
import time
url = "https://music.163.com/discover/toplist?id=3778678" # 去掉#号  网易云的防爬措施
resp1 = requests.get(url)
body = resp1.text   # print(body)
html = etree.HTML(body)
data1 = html.xpath("//ul[@class='f-hide']/li/a/@href") # 用于解析html中的数据 歌曲id
data2 = html.xpath("//ul[@class='f-hide']/li/a/text()") # 歌名
for i in range(len(data1)):
    url1 = "https://link.hhtjim.com/163/"+data1[i].split("=")[1]+".mp3"
    time.sleep(1)
    # print(url1)
    # print(data2[i]+"---->"+data1[i])
    resp2 = requests.get(url1)
    # print(resp2)
    data3 = resp2.content
    # print(data3)
    path = "D:\\Desktop\\music\\"+data2[i]+".mp3"
    with open(path,"wb") as f:
        f.write(data3)
    print("=============",data2[i]+"下载完成========")

Note:在爬取一个网站的数据的时候,首先需要判断该网站该网页的数据是存在客户端还是服务端

判断方法:在网页右键点击检查网页源代码,看在源代码中是否存在自己所需要的内容。如果在则可以直接利用该链接爬取,如果不在则需要检查->Network->XHR->刷新,根据请求去寻找自己需要的内容,从而利用该链接去爬取自己所需的内容

  • .text返回的是Unicode型的数据(想要得到的是字符串,文本)
  • .content返回的是bytes型的数据(想要得到的是图片,文件)
  • .json返回的是json格式数据(想要得到的是json格式数据)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鹤林村菠萝皮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值