一直对爬虫感兴趣,很想写个爬虫来爬点东西来看看,最近刚好看了python的教程,巧了刚好看了一下博客有关这方面的介绍,作为一个初学者,以此作为学习记录,如还还帮助其他人解决一下常见的问题那就再好不过了。
一、安装python,配好环境路径PATH
二、区分命令行和交叉环境
命令行:用于安装BeautifulSoup,Selenium;运行.py文件
交叉环境:可以实时编译运行命令
note:
1、一般用Notepad++等进行编译,再在命令行下运行,注意命令行要切换到你编写的文件所在的目录,DOS命令操作
2、注意txt文件改后缀过来的.py,文章末尾可能会有一些空格编码什么的可能会造成错误。
三、按运行环境提示的错误查找解决一般就没有问题
注意跟字符转化有关的错误:
UnicodeEncodeError: 'gbk' codec can't encode character '\u30fb' in position 18: illegal multibyte sequence
一般是因为从网络上下载文件到本地时编码设置造成的错误,所以应该从网络到本地的接口入手,尝试去解决问题
教程原来的代码是:
from selenium import webdriver
import csv
#网易云音乐歌单的第一页
url = 'http://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='')
writer = csv.writer(csv_file)
#定义CSV文件里面存放内容的格式
writer.writerow(['标题','播放数','链接'])
#解析URL里面的每一页,直到“下一页”为空
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 = data[i].find_element_by_class_name("nb").text
if '万' in nb and int(nb.split("万")[0])>500:
#获取播放数大于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()
结果,得到的CSV文件里面的中文出现乱码:
于是,结合文件的写入,我将里面的一句代码修改一下:
#加上文字的编码方式
csv_file = open("playlist.csv","w",newline='',encoding='gbk')
结果就好了….
总结:哈哈哈哈咯,python爬虫真好玩,其实今天是我第一天接触python,不过我觉得其实编程语言的学习不一定一定要从基本数据类型,基本数据结构,流程,函数等等,按部就班的学习,如果直接通过结果导向,先知道可以做什么,可能学习的兴趣会更大!
文章参考:https://blog.csdn.net/jdjrdata/article/details/73614607