参考:
[原创]手把手教你写网络爬虫(1):网易云音乐歌单
python3-csv写入中文乱码
京东金融标题:
# coding=utf-8
from urllib.request import urlopen
from bs4 import BeautifulSoup
# 打开url,获取HTML内容
html = urlopen("http://jr.jd.com")
# 找到所选标签
bs_obj = BeautifulSoup(html.read(), "html.parser")
text_list = bs_obj.find_all("a", "nav-item-primary")
for text in text_list:
print(text.get_text())
html.close()
结果:
首页
财富
众筹
保险
白条
股票
东家财富
企业金融
金融云
城市计算
网易歌单:
# -*- coding:utf-8 -*-
from selenium import webdriver
import csv
# 网易云音乐歌单第一页的url
url = 'https://music.163.com/#/discover/playlist/?order=hot&cat=%E5%85%A8%E9%83%A8&limit=35&offset=0'
# 用PhantomJS接口创建一个Selenium的webdriver
driver = webdriver.PhantomJS()
# 准备好存储歌单csv
csv_file = open("playlist.csv", "w", newline='', encoding='utf-8-sig')
writer = csv.writer(csv_file)
writer.writerow(['标题', '播放数', '链接'])
# 解析每一页,直到‘下一页’为空
while url != 'javascript:void(0)':
# 用webDriver加载页面
driver.get(url)
# 切换到内容的iframe
driver.switch_to.frame("contentFrame")
# 定位歌单标签
data = driver.find_element_by_id("m-pl-container").find_elements_by_tag_name("li")
# 解析一页中所有歌单
for i in range(len(data)):
# 获取播放数
nb = 0
if data[i].find_element_by_class_name("nb"):
nb = data[i].find_element_by_class_name("nb").text
if '万' in nb and int(nb.split("万")[0]) > 1000:
# 获取播放数大于500万的歌单的封面
msk = data[i].find_element_by_css_selector("a.msk")
# 把封面上的标题和链接连同播放数一起写到文件中
writer.writerow([msk.get_attribute('title'), nb, msk.get_attribute('href')])
# 定位'下一页'的url
url = driver.find_element_by_css_selector("a.zbtn.znxt").get_attribute('href')
csv_file.close()
结果:
标题,播放数,链接
你的青春里有没有属于你的一首歌?,5260万,https://music.163.com/playlist?id=2201879658
耳朵喜欢你 好听到可以单曲循环,4222万,https://music.163.com/playlist?id=2232237850
2018上半年最热新歌TOP50,1588万,https://music.163.com/playlist?id=2303649893
〖纯音乐〗轻旋淡律,也可以抓住你的耳朵,1114万,https://music.163.com/playlist?id=2235097256
失恋必听歌单 | 因为你突然听懂了很多歌,1332万,https://music.163.com/playlist?id=2385384236
【经典】聼一首老歌,想念一段时光,1366万,https://music.163.com/playlist?id=2236351380
单循辑|我想和你共享耳机,2272万,https://music.163.com/playlist?id=2337333174
予你情诗百首,余生你是我的所有,2208万,https://music.163.com/playlist?id=2230318386
这么热的天 当然要勤洗头啦,1091万,https://music.163.com/playlist?id=2258899307
“以前喜欢一个人,现在喜欢一个人”,1121万,https://music.163.com/playlist?id=2329680016
欧美精选 | 嗨 伙计 要来首10w+吗?,1041万,https://music.163.com/playlist?id=2301227992
攒了一大堆好听的歌想和你一起听,3447万,https://music.163.com/playlist?id=2353471182
这世界上情歌那么多,却没有一首属于我,1812万,https://music.163.com/playlist?id=2335662972
2018年十月最热新歌TOP50,1373万,https://music.163.com/playlist?id=2494952275
别急,甜甜的恋爱马上就轮到你了,1667万,https://music.163.com/playlist?id=2430524968
听说你也在找好听的华语歌,1521万,https://music.163.com/playlist?id=2438292020
翻唱比原唱好听系列(个人向),1125万,https://music.163.com/playlist?id=2250548490
最是粤语最为情深 也唯独你最难忘怀,1280万,https://music.163.com/playlist?id=2388322013
提神醒脑 疯狂抖腿魔性摇头.GIF,1251万,https://music.163.com/playlist?id=2364146680
注意:
1.乱码问题:
csv_file = open("playlist.csv", "w", newline='', encoding='utf-8-sig')
//encoding='utf-8-sig' 避免写入乱码
2.url的http是否带s
3.find_elements_by_tag_name与find_elements_by_tag_name的区别,一个带s,一个不带