Python语言程序设计(微课版)-课件 -CH14-网络爬虫程序设计_第1页
Python语言程序设计(微课版)-课件 -CH14-网络爬虫程序设计_第2页
Python语言程序设计(微课版)-课件 -CH14-网络爬虫程序设计_第3页
Python语言程序设计(微课版)-课件 -CH14-网络爬虫程序设计_第4页
Python语言程序设计(微课版)-课件 -CH14-网络爬虫程序设计_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第14章

网络爬虫网页爬取操作01.网络爬虫概念03.Python编写网络爬虫02.相关技术介绍04.综合案例主要内容1网络爬虫概念网络爬虫网络爬虫是通过URL来查找目标网页,并按照指定规则自动抓取网页中的内容无需用户打开网页为用户节省时间、提高数据采集的准确度快速获取大量数据浏览器获取网页过程RequestReponse网络爬虫的步骤获取网页代码解析网页代码提取数据据存储数据2相关技术介绍相关技术HTML基础CSS基础Python相关库:requests,urllib,BeautifulSoupHTML基础HTML全称“超文本标记语言”与程序设计语言有所区别,无逻辑结构采用标记方式进行网页构建使用<>将标记括起来HTML基础HTML基础CSS基础层叠样式表控制HTML页面的样式和布局使用{}将样式定义括起来CSS基础CSS选择器元素选择器:元素选择器根据元素名称来选择HTML元素id选择器:使用HTML元素的id属性来选择特定元素CSS基础

CSS选择器类选择器:选择有特定class属性的HTML元素HTML与CSS实例HTTP基础超文本传输协议用于从万维网(WWW:WorldWideWeb)服务器传输超文本到本地浏览器的传送协议是客户端终端和服务器端请求和应答的标准HTTP消息头在超文本传输协议(HTTP)的请求和响应消息中,协议头部分的那些组件定义了HTTP事务中的具体操作参数Cookie:为了辨别用户身份而储存在用户本地终端的数据User-Agent:使用的浏览器型号、版本和操作系统的信息HTTP请求方式GET:请求指定的页面信息,并返回相应信息POST:向指定资源提交数据进行处理请求PUT:向指定资源位置上传其最新内容HTTP状态码向服务器发送请求后得到的结果200-请求成功,浏览器会把响应回来的信息显示在浏览器端301-资源(网页等)被永久转移到其它URL404-请求的资源(网页等)不存在500-内部服务器错误3Python编写网络爬虫需要使用3个库requests:浏览器向服务器发送请求response:服务器响应信息BeautifulSoup:解析网页内容编写网络爬虫代码的步骤找到需要爬取内容的网页URL检查该页面的HTML代码在HTML代码中找到要提取的数据编写Python代码进行网页请求、解析存储数据01.发起请求(request)03.解析内容02.获取响应内容(Response)04.保存数据主要步骤第一步:发起请求(request)requests模块是Python中实现HTTP请求的一种方式用来模拟浏览器请求importrequestsrequests模块主要方法:get函数:获取HTML网页的主要方法,对应HTTP的GETpost函数:向HTML网页提交POST请求的方法put函数:向HTML网页提交PUT请求的方法get方法requests.get(url,headers)url:需要抓取的URL地址headers:数据字典格式,HTTP请求的消息头返回包含服务器资源的response对象get方法【例14.6】获取百度页面的response对象get方法获取爬取网页的URL豆瓣电影排行榜的页面地址为/chartwindows键+F12打开开发者工具选择Network,刷新页面,选中chartget方法获取headers参数User-AgentCookie在RequestHeaders中get方法【例14.7】获取豆瓣电影页面的response对象第二步:获取响应内容(reponse)requests发送请求后,会返回服务器的响应信息通过分析响应信息判断请求结果resposneresponse对象的属性encoding:响应字符编码,默认为ISO-8859-1,其不支持编译中文,需要设置encoding="utf-8"或"gbk"text:字符串,网站源码content:字节流,字符串网站源码,用于下载图片、音频、视频等status_code:HTTP响应码url:实际数据的URL地址。response查看response对象的各个属性【例14.8】第三步:解析内容(BeautifulSoup)网页内容成功从服务器端获取后,需要解析网页提取所需信息通过对网页内容进行解析提取有用数据BeautifulSoupBeautifulSoup是HTML/XML的解析器,主要的功能是解析和提取HTML/XML数据BeautifulSoup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码返回一个BeautifulSoup对象frombs4importBeautifulSoupBeautifulSoupBeautifulSoup(HTML文本,解析器)HTML文本:网站源代码的字符串形式解析器:'html.parser':bs4的HTML解析器'lxml':lxml的HTML解析器,建议使用'xml':lxml的XML解析器'html5lib':html5lib的解析器BeautifulSoup--crawl04解析不同来源页面包括:直接解析HTML代码与requests结合解析网络网页直接解析本地网页直接解析HTML代码【例14.9】直接解析HTML代码的过程比较简单直接解析本地网页【例14.10】解析本地磁盘中存储的网页文件与requests结合解析网络页面【例14.11】通过requests库向服务器发送请求,并将服务器发回的响应通过BeautifulSoup()函数进行解析BeautifulSoup提取页面元素BeautifulSoup提取页面元素有多种方式:CSS选择器搜索文档树遍历文档树在开发者工具中查看页面源文件在开发者工具中可以查看页面源文件获取页面元素信息使用CSS选择器页面中会大量使用CSS选择器,BeautifulSoup支持大部分的CSS选择器,通过CSS选择器获取页面元素select方法select(CSS字符串)选择的结果以列表形式返回使用CSS选择器通过标记名查找select("标记名称")举例:【例14.12】获取豆瓣电影排行榜页面中所有<a>…</a>标记使用CSS选择器通过CSS类名查找select("CSS类名")举例:select(".item")查找页面中CSS类名为item的标记【例14.13】使用CSS选择器通过CSSid名查找select("CSS

id名")举例:select("#content")查找页面中CSSid名为content的标记【例14.14】使用CSS选择器组合查找select("组合字符串"):组合字符串为标记、类名、id名的组合,组合之间用空格间隔举例:select("a.nbg")

查找页面中<a>标记中类名为nbg的标记select("div.pl") 查找页面中<div>标记下类名为pl的标记使用CSS选择器--crawl05直接子标记查找select("父子标记"):标记之间用“>”代表父子关系,即只有一层关系举例select("div.star>span")#查找页面中类名为star的<div>标记下的<span>标记select("div.star>span.rating_nums")查找页面中类名为star的<div>标记下的类名为rating_nums的<span>标记使用CSS选择器属性查找属性需要用中括号括起来,属性和标签属于同一节点,所以中间不能加空格,否则会无法匹配到举例:select('span[class="rating_nums"]')查找页面中类名为rating_nums的<span>标记select('divspan[class="pl"]')查找页面中<div>标记下类名为rating_nums的<span>标记使用CSS选择器获取元素包含的内容get_text():获取节点中包含的文字(包括子孙节点中的内容)get("HTML属性"):获取HTML标记的某一个属性值举例:select("div.pl2>a")[0].get("href")获取类名为pl2的<div>下第一个<a>标记的href属性值使用CSS选择器遍历返回的列表内容通过for循环遍历select获取的页面元素获取页面中所有用于显示电影名称的<a>标记【例14.15】第四步:保存数据将解析好的数据存入csv文件中importpandasto_csv函数4robots.txtrobots.txtrobots.txt是一个存放于网站根目录下的文本文件,用于告诉爬虫此网站中的哪些内容不应被爬取,哪些可以被爬取在网站域名后加上/robots.txt即可查看robots.txt豆瓣电影的robots.txt地址:https://movie./robots.txtrobots.txtrobots.txt只是一个君子协议应遵守网站规则,避免违法行为4综合案例爬取本地网页数据本地页面中存储了豆瓣电影中排名前250的电影信息。案例主要操作包括:分析页面源文件,编写页面爬取代码,爬取电影名、简介、评分等3个数据,并存储到csv文件中。第一步:发送请求并获取响应由于爬取的是本地网页,因此不涉及request操作withopen('movie.html','r',encoding='UTF-8')asfp:soup=BeautifulSoup(fp,"lxml")第二步:解析网页根据CSS选择器解析页面titles=soup.select('div.movieinfo>h4>a')infos=soup.select('')ratings=soup.select('span.rating')第三步:获取页面元素从解析出的页面数据中提取相应元素alldata=[]fortitle,info,ratinginzip(titles,infos,ratings):data={

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论