利用urllib和BeautifulSoup基于python3的爬虫demo

参考:
[原创]手把手教你写网络爬虫(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,一个不带

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值