大家好,给大家分享一下python数据爬取有哪些库和框架,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!
文章目录
系列文章二、Python 爬 虫1、任务介绍2、简介3、基本流程3.1、准备工作3.1.1、分析页面3.1.2、编码规范3.1.3、导入模块3.1.4、程序流程3.2、获取数据3.3、解析数据3.4、保存数据3.4.1、Excel表存储3.4.1、SQLite数据库保存
系列文章
Python 学习 01 —— Python基础Python 库学习 —— urllib 学习Python 库学习 —— BeautifulSoup4学习Python 库学习 —— Re 正则表达式Python 库学习 —— Excel存储(xlwt、xlrd)Python 学习 02 —— Python如何爬取数据Python 库学习 —— Flask 基础学习Python 学习03 —— 爬虫网站项目
二、Python 爬 虫
1、任务介绍
爬虫的学习按照任务驱动的方式进行,最终实现douban电影Top250的基本信息抓取,包括电影的名称、douban评分、评价数、电影概括、电影链接等。后续会再以可视化的方式展现,比如统计图。
电影Top250网址:
2、简介
是什么
网络爬虫是一种按照特定规则,自动抓取互联网信息的程序或者脚本。由于互联网数据的多样性和资源的有限性,如今根据用户需求定向抓取相关网页并分析已经成为了主流的爬取策略。
能做什么
我们可以爬取自己想看的视频、各种图片,只要是能够通过浏览器访问的数据都可以用它进行爬取。这里并不是说能爬取视频网站上的VIP才能看的视频,而是本身我们就能通过浏览器看,除非开VIP,否则还是没法访问到那些特定视频。
本质
模拟浏览器打开网页,获取网页中我们想要的特定数据。
原理:因为每个网页其实就是一个HTML,里面有各种超链接,我们可以顺着超链接进而访问下一个网页。
3、基本流程
准备工作
通过浏览器查看分析目标网页,学习编程基础规范。
获取数据
通过HTTP库向目标站点发起请求,请求包含额外的header等信息,若服务器正常响应就会得到一个Response,这便是所要获取的页面内容。
解析内容
得到的内容可能是HTML、JSON等格式,这时就要用到页面解析库、正则表达式等进行解析。
保存数据
保存形式很多,可以保存为文本、数据库或是特定格式的文件(Excel)
3.1、准备工作
这里我们先进入doubanTop250分析下每次翻页后URL的格式。
第一页:;filter=
第二页:;filter=
第三页:;filter=
注意:初始访问第一页是没有?top250?start=0&filter=
。最后的&filter=
省略也能正常访问。
3.1.1、分析页面
借助Charome开发者工具(按F12进入,其他浏览器也类似)来分析网页,在Elments下找到需要的数据位置。
当我们点击了某个链接后,浏览器就会向服务器发出请求
3.1.2、编码规范
通常Python程序第一行需要加入
# -*- coding:utf-8 或者 # coding=utf-8
这样可以在代码中包含中文,使其不乱码。
Python中使用#
来添加注释,说明代码(段)的作用。
Python文件中加入main函数用于测试程序if __name__ == "__main__":
,下面简单举例说明:
"""
程序输出:
hello 2
hello 1
__main__的意义:
程序会依次调用 test(2) 和 test(1),因为python是解释型语言,会按顺序执行。
为了使函数调用整齐有序,我们在__main__之前定义函数,在__main__中去调用。
约定俗成我们都从main开始执行。
"""
def main(a):
print("hello", a)
test(2)
if __name__ == "__main__":
main(1)
3.1.3、导入模块
这里要导入的第三方模块有:bs4、re、urllib、xlwt
Python导入第三方模块有两种方式,在命令行终端使用pip
或者在PyCharm导入。
pip
命令:在PyCharm底部选择Terminal
,输入pip 第三方模块名
来安装第三方模块。
PyCharm导入(常用):
进入设置页面(Windows:Ctrl+Alt+S,Mac:command+,)
输入要导入的模块进行安装(点击了左下角的install Package
后就会自动安装了,安装完成或失败都有提示)
添加xwlt
和bs4
(这里re
、urllib
、sqlite3
是Python自带的,无需进行安装,直接导入)
import re # 正则表达式,用于文字匹配
from bs4 import BeautifulSoup # 用于网页解析,对HTML进行拆分,方便获取数据
import urllib.request, urllib.error # 用于指定URL,给网址就能进行爬取
import xlwt # 用于Excel操作
import sqlite3 # 用于进行SQLite数据库操作
3.1.4、程序流程
这里先是大致思路,后面逐一对每个步骤进行实现。
# -*- coding = utf-8 -*-
# @Time : 2021/7/3 6:33 下午
# @Author : 张城阳
# @File :
# @Software : PyCharm
import re # 正则表达式,用于文字匹配
from bs4 import BeautifulSoup # 用于网页解析,对HTML进行拆分,方便获取数据
import urllib.request, urllib.error # 用于指定URL,给网址就能进行爬取
import xlwt # 用于Excel操作
import sqlite3 # 用于进行SQLite数据库操作
def main():
# 豆瓣Top250网址(末尾的参数 ?start= 加不加都可以访问到第一页)
baseUrl = ""
# 1. 爬取网页并解析数据
dataList = getData(baseUrl)
# 2. 保存数据(以Excel形式保存)
savePath = ".\\豆瓣电影"
saveData(savePath)
# 爬取网页,返回数据列表
def getData(baseurl):
dataList = []
# 爬取网页并获取需要的数据
pass
# 对数据逐一解析
pass
# 返回解析好的数据
return dataList
# 保存数据
def saveData(savePath):
pass
# 程序入口
if __name__ == "__main__":
# 调用函数
main()
3.2、获取数据
Python一般使用urllib库获取页面(Python2是urllib2,Python3将urllib和urllib2整合了),关于urllib可以我看另一篇博客Python 第三方库 —— urllib 学习。
定义一个用于获取网页的函数askURL
,给函数传入url就会返回该网址对于的网页内容。对于每一个页面都调用askURL
去获取页面内容在访问页面时可能出现错误,为了保证程序正常运行,需要进行异常捕获try……except……
# 得到一个指定URL的网页内容
def askURL(url):
# 模拟头部信息,像douban服务器发送消息
# User-Agent 表明这是一个浏览器(这个来自谷歌浏览器F12里 Network中 Request headers的User-Agent)