def
__init__
(
self
,
baseurl
,
path
)
:
head
=
{
"user-agent"
:
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
baseurl
=
baseurl
.
replace
(
"#/"
,
""
)
self
.
baseurl
=
baseurl
self
.
headers
=
head
self
.
path
=
path
def
main
(
self
)
:
html
=
self
.
askurl
(
)
bs4
=
self
.
analysis
(
html
)
name1
=
self
.
matching
(
bs4
)
self
.
save
(
name1
)
def
askurl
(
self
)
:
req
=
request
.
Request
(
url
=
self
.
baseurl
,
headers
=
self
.
headers
)
response
=
request
.
urlopen
(
req
)
html
=
response
.
read
(
)
.
decode
(
"utf-8"
)
return
html
def
analysis
(
self
,
html
)
:
soup
=
BeautifulSoup
(
html
,
"html.parser"
)
bs4
=
soup
.
find_all
(
"textarea"
)
bs4
=
str
(
bs4
)
return
bs4
def
matching
(
self
,
bs4
)
:
rule0
=
re
.
compile
(
r
'"name":"(.*?)","tns":[],"alias":[]'
)
name0
=
re
.
findall
(
rule0
,
bs4
)
str
=
""
for
i
in
name0
:
str
=
str
+
","
+
i
str
=
str
.
replace
(
"\xa0"
,
" "
)
rule1
=
re
.
compile
(
r
'jpg,(.*?),(.*?)","id":(\d*)'
)
name1
=
re
.
findall
(
rule1
,
str
)
return
name1
def
save
(
self
,
name1
)
:
for
j
in
name1
:
print
(
"正在下载:"
+
j
[
1
]
+
" - "
+
j
[
0
]
+
"..."
)
url
=
"http://music.163.com/song/media/outer/url?id="
+
j
[
2
]
content
=
requests
.
get
(
url
=
url
,
headers
=
self
.
headers
)
.
content
with
open
(
self
.
path
+
j
[
1
]
+
" - "
+
j
[
0
]
+
".mp3"
,
"wb"
)
as
f
:
f
.
write
(
content
)
print
(
j
[
1
]
+
" - "
+
j
[
0
]
+
"下载完毕。\n"
)
time
.
sleep
(
0.5
)
return
if
__name__
==
"__main__"
:
baseurl
=
"https://music.163.com/discover/toplist?id=3778678"
path
=
"D:/网易云热歌榜/"
demo0
=
Music
(
baseurl
,
path
)
demo0
.
main
(
)
print
(
"下载完毕"
)
二、爬取内容
一、爬虫代码、from urllib import requestfrom bs4 import BeautifulSoupimport reimport requestsimport timeclass Music(object): def __init__(self, baseurl, path): head = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKi
要想学好
爬虫
,必须把基础打扎实,之前发布了两篇文章,分别是使用XPATH和
requests
爬取
网页,今天的文章是学习Beautiful Soup并通过一个例子来实现如何使用Beautiful Soup
爬取
网页。
什么是Beautiful Soup
Beautiful Soup是一款高效的
Python
网页解析分析工具,可以用于解析HTL和XML文件并从中提取数据。
Beautiful Soup输入文件的默认编码是Unicode,输出文件的编码是UTF-8。
Beautiful Soup具有将输入文件自动补全的功能,如果输入的HTML文件的title标签没有闭合,则在输出的文件中
本人正在点亮
爬虫
技能树,写blog以记录
selenium和bs4介绍
Selenium 自动化测试工具。它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器,如果你在这些浏览器里面安装一个 Selenium 的插件,那么便可以方便地实现Web界面的测试。换句话说叫 Selenium 支持这些浏览器驱动。
Beautiful Soup提供一些简单的、
python
式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。
观察页面信息
我们
爬取
页面为
网易云音乐
的歌
2.可通过在headers中加上账户cookie获取系统为该账户推荐的歌单封面(每个账户系统推荐的歌单均不同)
设计思路简略为输入歌单类型后,循环获取该类型歌单每一页的地址,再根据该地址循环获取该页下每个歌单的图片地址,并将图片分辨率恢复正常大小后下载保存到本地
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。
PS:如有需要
Python
学习资料的小伙伴可以加点击下方链接自行获取
python
免费学习资料以及群交流解答点击即可加入
python
3.6.5
pycharm
import
requests
相关模块 pip 安装即可
网易云的歌曲还是很好听的~
超NICE的网站~
http://tool.liumingye.cn/music/?page=homePage
需要分两步走,第一步是定位到
热歌
榜
单所在的资源,从而得到这
热歌
榜
中到底有哪些歌并获得每首歌的id;第二步是根据上一步得到的每首歌的id,定位到单独每首歌所在的资源,从而得到每首歌下的评论信息。具体讲:
1)首先我们需要得到
热歌
榜
数据所在的url,经浏览器开发者工具查看网页代码,得知
热歌
榜
的数据所在...
# 请在此添加代码,对输入的整数进行判断,如果是素数则输出为True,不是素数则输出为False
#********** Begin *********#
def prime(n):
if n < 2 :
return False
for j in range(2,n) :
if n % j == 0:
from bs4 import
BeautifulSoup
url = 'https://music.163.com/discover/toplist?id=3778678' #
网易云音乐
热歌
榜
的URL
headers = {
'Referer': 'https://music.163.com/',
'Host': 'music.163.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
} # 请求头部信息
response =
requests
.get(url, headers=headers)
soup =
BeautifulSoup
(response.text, 'html.parser')
song_list = soup.find('ul', class_='f-hide').find_all('a') # 获取歌曲列表
for song in song_list:
print(song.text) # 输出歌曲名称
运行上述代码,即可
爬取
网易云音乐
热歌
榜
的歌曲列表。同理,如果要
爬取
飙升
榜
的歌曲列表,只需将URL改为`'https://music.163.com/discover/toplist?id=19723756'`即可。