一、前言
网络爬虫的目的是实现实时自动化获取数据,成为大数据领域的必备环节,毕竟有数据才能进行数据分析。
KYC框架
Know Your Company(了解你的公司)、Know Your Competitor(了解你的竞争对手)、Know Your Customer(了解你的客户)
4P
Product:产品创新, Place:智能选址 , Price:动态价格, Promotion: 数据驱动的营销活动
1.1 爬取数据内容
社交媒体上的每一条发帖,团购网站上的价格及点评, 招聘网站上的招聘信息。
1.2 Robots协议
Robots协议全称是“网络爬虫排除协议”,是国际互联网界的通行的道德规范。
我们以淘宝网的robots.txt为例。 http://www.taobao.com/robots.txt
1.3 Python爬虫的流程及技术实现
流程主要分为三个部分,(1)获取网页,(2)解析网页(提取数据); (3) 存储数据
(1)获取网页
获取网页的基础技术:request,urllib和selenium(模拟浏览器)
获取网页的高级技术:多线程多进程抓取,登录抓取,突破IP封禁和服务器抓取
(2)解析网页
解析网页的基础技术:re正则表达式, BeautifulSoup和lxml
解析网页的进阶技术:解决中文乱码
(3)存储数据
存储数据的基础技术:存入txt文件和存入CSV文件或xls文件
存储数据的进阶技术:存入MySQL数据库和存入MongDB数据库
二、Python环境的搭建
本文介绍的是一种名为Anaconda的Python的科学开发环境,当然也可用原生的Python和pip安装包搭建,在此不再赘述;
搭建步骤如下:
(1)下载Anaconda,进入官网https://www.anaconda.com/download/,选择对应的操作系统,Python版本,推荐下载Python3.6;
(2)安装Anaconda,此时要注意勾选“Add Anaconda to my PATH environment variable”选项;
(3)使用pip安装第三方库,pip是Python安装各种第三方库的工具,因Anaconda中自带了pip,因此不用自己配置安装;
(4)打开命令窗口,Windows打开cmd, Linux和Mac系统打开terminal, 在命令行输入
pip install bs4
pip install requests
pip install lxml
2.使用编译器Jupyter编程
Python的编译器有很多,比如Notepad++, Sublime, Spyder和Jupyter
使用方法如下:
(1)在命令行键入:Jupyter notebook 按下回车即可打开,浏览器启动Jupyter主界面,
(2)创建Python文件,选择相应的文件,单机右上角的New按钮,选择下拉列表中的Python3作为Nodebook的启动类型
(3)在创建的文件中编写Python程序,可以按 Alt+Enter即可执行代码
Jupyter的优势在于交互式编程和展示功能。同时还可以添加各种元素,比如图片,视频,链接等,还支持Markdown,可以当做PPT使用。
三、编写一个简单的爬虫
1.第一步:爬取页面
#!/usr/bin/python
# coding: UTF-8
import requests
url = "http://movie.douban.com/"
headers ={
'Host' : 'movie.douban.com',
'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0'
}
#用requests的headers伪装成浏览器访问,r是requests的Response回复对象
r = requests.get(url, headers = headers)
# r.text是获取的网页内容的代码
print(r.text)
2.第二步:提取需要的数据
#!/usr/bin/python
#coding:UTF-8
import requests
from bs4 import BeautifulSoup
url = ""
headers = {
'Host' : 'movie.douban.com',
'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0
}
r = requests.get(url, headers = headers)
soup = BeautifulSoup(r.text, "lxml") #使用BeautifulSoup来解析html代码
title = soup.find("h1", class_="").a.text.strip()
print(title)
PS:使用检查元素的功能
(1)Chrome浏览器:右击网页页面,在弹出菜单中选择"检查"命令,
(2)单击鼠标左上角的鼠标键按钮,然后在页面上单击想要的数据,下面的Element会出现相应的code所在的地方,就定位到想要的元素了
(3)在Python代码中用 soup.find("h1", class_="").a.text.strip() 提取标题
3.第三步:存储数据
with open("title.txt", "a+") as f:
f.write(title)
f.close()
这样,标题就被存储到title.txt 文件中了,我们的第一个爬虫小项目就完成了