Python之网络爬虫

一直对爬虫感兴趣,很想写个爬虫来爬点东西来看看,最近刚好看了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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1章 网络爬虫简介 1 1.1 网络爬虫何时有用 1 1.2 网络爬虫是否合法 2 1.3 背景调研 3 1.3.1 检查robots.txt 3 1.3.2 检查网站地图 4 1.3.3 估算网站大小 5 1.3.4 识别网站所用技术 7 1.3.5 寻找网站所有者 7 1.4 编写第 一个网络爬虫 8 1.4.1 下载网页 9 1.4.2 网站地图爬虫 12 1.4.3 ID遍历爬虫 13 1.4.4 链接爬虫 15 1.5 本章小结 22 第2章 数据抓取 23 2.1 分析网页 23 2.2 三种网页抓取方法 26 2.2.1 正则表达式 26 2.2.2 Beautiful Soup 28 2.2.3 Lxml 30 2.2.4 性能对比 32 2.2.5 结论 35 2.2.6 为链接爬虫添加抓取回调 35 2.3 本章小结 38 第3章 下载缓存 39 3.1 为链接爬虫添加缓存支持 39 3.2 磁盘缓存 42 3.2.1 实现 44 3.2.2 缓存测试 46 3.2.3 节省磁盘空间 46 3.2.4 清理过期数据 47 3.2.5 缺点 48 3.3 数据库缓存 49 3.3.1 NoSQL是什么 50 3.3.2 安装MongoDB 50 3.3.3 MongoDB概述 50 3.3.4 MongoDB缓存实现 52 3.3.5 压缩 54 3.3.6 缓存测试 54 3.4 本章小结 55 第4章 并发下载 57 4.1 100万个网页 57 4.2 串行爬虫 60 4.3 多线程爬虫 60 4.3.1 线程和进程如何工作 61 4.3.2 实现 61 4.3.3 多进程爬虫 63 4.4 性能 67 4.5 本章小结 68 第5章 动态内容 69 5.1 动态网页示例 69 5.2 对动态网页进行逆向工程 72 5.3 渲染动态网页 77 5.3.1 PyQt还是PySide 78 5.3.2 执行 78 5.3.3 使用WebKit与网站交互 80 5.3.4 Selenium 85 5.4 本章小结 88 第6章 表单交互 89 6.1 登录表单 90 6.2 支持内容更新的登录脚本扩展 97 6.3 使用Mechanize模块实现自动化表单处理 100 6.4 本章小结 102 第7章 验证码处理 103 7.1 注册账号 103 7.2 光学字符识别 106 7.3 处理复杂验证码 111 7.3.1 使用验证码处理服务 112 7.3.2 9kw入门 112 7.3.3 与注册功能集成 119 7.4 本章小结 120 第8章 Scrapy 121 8.1 安装 121 8.2 启动项目 122 8.2.1 定义模型 123 8.2.2 创建爬虫 124 8.2.3 使用shell命令抓取 128 8.2.4 检查结果 129 8.2.5 中断与恢复爬虫 132 8.3 使用Portia编写可视化爬虫 133 8.3.1 安装 133 8.3.2 标注 136 8.3.3 优化爬虫 138 8.3.4 检查结果 140 8.4 使用Scrapely实现自动化抓取 141 8.5 本章小结 142 第9章 总结 143 9.1 Google搜索引擎 143 9.2 Facebook 148 9.2.1 网站 148 9.2.2 API 150 9.3 Gap 151 9.4 宝马 153 9.5 本章小结 157
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值