Python网络爬虫学习
龙云尧个人博客,转载请注明出处
CSDN地址:http://blog.csdn.net/michael753951/article/details/70235761
个人blog地址:http://123.207.243.115:81/pythonwang-luo-pa-chong-xue-xi/
初步了解网络爬虫的工具使用和代码编写
学习地址见网易云课堂《Python网络实战》
前言
工具
1.Python编辑工具
实验中使用到的Python工具为Anaconda
,工具的安装参照Anaconda使用总结
(Linux下)以及Python科学计算的瑞士军刀——Anaconda 安装与配置
(windows下)相关教程。
在视频教学过程中,讲师也会有一点安装指导。
初学过程中推荐使用Jupyter notebook
工具在浏览器中编辑,这样可以每次只执行几行函数,而不用一次从头到尾执行完毕。调试完成以后,可以在Spyder
中一次运行。
Jupyter notebook
工具中,ctrl+enter表示执行当前cell的代码,alt+enter表示新建一个cell,其他的在本次实验中用不到。
2.辅助工具
使用Chrome
辅助元素选择。需要对Chrome的开发者模式
有较多的使用经验。
不过在视频中,讲师会反复示范怎么使用Chrome的开发者模式,所以使用起来不必太担心。
知识储备
1.语法
基本的Python语法知识可以参照Python 基础语法(推荐)和Python基本语法,python入门到精通[二](页面很low)
注:runoob.com是一个好网站
在语法和知识结构上,Python的概念和C++/Java这类面向对象型语言很相似,比如类似的对象概念.
比如类似于数组的列表(List),类似于map的字典(dictdict)。其他部分自行体会.
因为本次教学课程中,实验较为简单,所以我其实也只是对Python有一个基本的了解。
2.工具使用
BeautifulSoap的使用教程参见Python爬虫利器二之Beautiful Soup的用法
在本次实验中,网络爬虫需要对爬取的网页进行解析,故而不可避免的需要使用到html的相关知识。不过难度不大,一边实验一边回忆都已经足够了。
在实验中使用了BeautifulSoup工具能够很方便的将抓取的网页解析成一个文档树。然后我们就可以对这个文档树进行select,选择出特定的标签,进而分析出我们想要的信息。
举个例子:
import requests # 导入工具包
artibody_url = 'http://news.sina.com.cn/o/2017-04-18/doc-ifyeimzx6745829.shtml'
artibody_res = requests.get(artibody_url) # 模仿浏览器,使用get方法获取url指向的网页资源
artibody_res.encoding = 'utf-8' # 设置编码,否则抓取的文档会出现乱码
from bs4 import BeautifulSoup # 从bs4中导入BeautifulSoap包
artibody_soup = BeautifulSoup(artibody_res.text, 'html.parser') # 将抓取的网页扔进BeautifulSoap生成一个文档树
artibody_div = artibody_soup.select('#artibody p')[1:-2] # 使用select方法获取想要的内容
# select中内容的使用和css的选择器类似,id使用'#xxx', 类使用'.xxx',普通标签使用'p',另外还可以有子代选择器'body div #artibody p'
3.本篇博客系个人学习所总结的知识,如果有什么概念或者其他错误,欢迎喷。但是不小心对你们造成误导,那就概不负责了2333
正题
课程知识总结
将这个部分写在最前面,是为了在课程开始之前就对整个课程的目的,以及coding过程中,每一步的目的有所了解。避免盲目跟着打代码,而不知道整个项目目的。
本课程实现了从网易新闻网页中抓取新闻信息,封装成结构化数据的过程。
课程一共18讲,每一讲2-10分钟不等,一般为5分钟。
* 第1-3讲,为课程入门,大致介绍课程目的,对Python编写网络爬虫进行初步介绍。
* 第4讲,实现模拟浏览器,使用get方法获取网页信息的方法。
* 第5-6讲,介绍BeautifulSoap,介绍基本使用方法
* 第7-16讲,利用BeautifulSoap构造的文档树剖析整个网页,并且通过网页一步一步获取”title”(标题), “newssource”(原标题), “date”(发稿时间), “article”(新闻主题), “article”(编辑), “commen