python爬虫入门——邓旭东.ppt_第1页
python爬虫入门——邓旭东.ppt_第2页
python爬虫入门——邓旭东.ppt_第3页
python爬虫入门——邓旭东.ppt_第4页
python爬虫入门——邓旭东.ppt_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

Python爬虫快速入门,中南大学 商学院,邓旭东,自我介绍,2009-2013 哈尔滨工业大学经济管理学院 2015-至今 中南大学商学院 主要研究方向为线上社群及消费者行为, 在学习研究过程中,习得了数据科学相关技术, 如数据采集、数据清理、数据规整、统计分析 熟悉R、python、MongoDB。,目录,二、准备知识,一、引言,三、网页请求,四、网页解析,五、开始采集,六、如何应对反爬,七、高级爬虫,爬虫工作原理 HTML+CSS Python基本知识,找规律构建url requests库,如何解析网页 BeautifulSoup re库的使用,条件、循环语句 try。Except异常处理。 数据存储,控制访问频率 伪装装成浏览器 使用代理IP,selenium+Firefox(36版) 抓包应对动态网页,引言 爬虫能做什么?,微博最近有啥热门话题 淘宝京东上某商品价格变动邮箱通知 女/男神最新动态 谁点赞最活跃 BBS抢沙发 社交网络分析 .,引言 爬虫能做什么,一句话, 只要浏览器有的, 你都可以抓可以爬,引言 爬虫好学吗?,from math import pow YouJoinUs = is:True If YouJoinUsis: result = pow(1.01,365) print(result) 37.7834,简单的道理,目录,一、引言,三、网页请求,四、网页解析,五、开始采集,六、如何应对反爬,七、高级爬虫,爬虫工作原理 HTML Python基本知识,找规律构建url requests库,如何解析网页 BeautifulSoup re库的使用,条件、循环语句 try。Except异常处理。 数据存储,控制访问频率 伪装装成浏览器 使用代理IP,selenium+Firefox(36版) 抓包应对动态网页,二、准备知识,爬虫工作原理,蓝色线条:发起请求 (request) 红色线条:返回响应(response),HTML标签,访问Python中文社区 返回HTML文件如下:,浏览器显示效果,Python基本知识,基本数据类型(str,list,tuple,set,dict) 循环语句 (for循环) 条件语句 (if else while) 表达式 (如age = 20),字符串str,字符串:单(双、三)引号及其夹住的字符 String = 我叫邓旭东 String2:5 邓旭东,列表list,1, 2, 3, 4, 5 1, 2, 3, 4, 5 a, b, c, d (1,2),(1,2) 列表中的元素可以是字符串,数字,元组,字典,集合 下面的写法是不对的a, b, c (除非a,b, c是变量),元组tuple,(1,2,3,4) (1, 2, 3, 4) (a, b, c, d),集合set,a, b, c 集合是不重复的元素组成的一个基本数据类型。,字典dict,Dict = name: 邓旭东, age: 26, gender: male 在大括号中,数据成对存储,冒号左边是键(key),冒号右边是值(value) Dictage 26,for循环,for x in 1, 2, 3: print(x) 1 2 3,目录,一、引言,三、网页请求,四、网页解析,五、开始采集,六、如何应对反爬,七、高级爬虫,爬虫工作原理 HTML Python基本知识,找规律构建url requests库,如何解析网页 BeautifulSoup re库的使用,条件、循环语句 try。Except异常处理。 数据存储,控制访问频率 伪装装成浏览器 使用代理IP,selenium+Firefox(36版) 抓包应对动态网页,二、准备知识,找规律构建url,通过点击翻看同一个目录 下的多个页面,发现规律, 定制url,发现规律定制url,发现规律定制url,这里的url规律是页码数减1后乘以20,构建网址,Base_url = for page in range(1,94,1): Num = page - 1 url = Base_url.format(num=Num*20) print(url) ,requests库,Requests is an elegant and simple HTTP library for Python, built for human beings. Requests是一个优雅简洁的Python HTTP库,给人类使用。,requests常用方法,最普通的访问 url = r = requests.get(url) 伪装成浏览器的访问 Headers = User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 r = requests.get(url,headers = Headers),requests常用方法,使用cookie访问 Cookie = Cookie: UM_distinctid=15ab64ecfd6592-0afad5b368bd69-1d3b6853-13c680-15ab64ecfd7b6; remember_user_token=W1sxMjEzMTM3XSwiJDJhJDEwJHhjYklYOGl2eTQ0Yi54WC5seVh2UWUiLCIxNDg5ODI2OTgwLjg4ODQyODciXQ%3D%3D-ac835770a030c0595b2993289e39c37d82ea27e2; CNZZDATA1258679142=559069578-1488626597-https%253A%252F%252F%252F%7C1489923851 r = requests.get(url, cookies=cookies),requests常用方法, r.text u“repository”:“open_issues”:0,“url”:“ #返回请求的状态 r.status_code #(4开头客户端问题,5开头服务器问题) 200,目录,一、引言,三、网页请求,四、网页解析,五、开始采集,六、如何应对反爬,七、高级爬虫,爬虫工作原理 HTML Python基本知识,找规律构建url requests库,如何解析网页 BeautifulSoup re库的使用,条件、循环语句 try。Except异常处理。 数据存储,控制访问频率 伪装装成浏览器 使用代理IP,selenium+Firefox(36版) 抓包应对动态网页,二、准备知识,如何解析网页,火狐Firebug/谷歌的开发者工具 BeaufifulSoup/re库,Python基本知识,BeautifulSoup,bsObj = BeautifulSoup(html, “html.parser”) 格式化输出 bsObj对象的内容,两种主要的对象: Tag、NavigableString,tag对象,bsObj.title The Dormouses story bsObj.head The Dormouses story bsObj.a ,注意:它查找的是在所有内容中的第一个符合要求的标签,如果要查询所有的标签,这种方法不奏效,BeautifulSoup 遍历文档树,#直接子节点 .contents bsObj.head.contents #输出的为列表 The Dormouses story bsObj.head.contents0 从列表中取出子节点 The Dormouses story,BeautifulSoup 遍历文档树,#直接子节点 .children bsObj.head.children #返回生成器,可以迭代取出来 for child in soup.body.children: print child The Dormouses story Once upon a time there were three little sisters; and their names were Lacie and Tillie and they lived at the bottom of a well,Tag对象,#Attrs The Dormouses story bsObj.p.attrs class: title, name: dromouse bsObj.p. attrs class title bsObi.p.attrs.get(class) title,NavigableString对象,#获取标签内部的文字 bsObj.p.string The Dormouses story,find /find_all,find_all(name , attrs) 得到的所有符合条件的结果,返回的是列表格式 bsObj.findall(a) , Lacie, Tillie bsObj.findall(a, href: ,find(name , attrs) 只返回第一个符合条件的结果,所以soup.find()后面可以直接接.text或者get_text()来获得标签中的文本。 bsObj.findall(a) ,re库-正则表达式,html = 我叫邓旭东 今年 27岁 BeautifulSoup获取html文件中的邓旭东和27,需要这样 bsObj=BeautifulSoup(html, html.parser) Contents = bsObj.findall(span) Contents0 我叫邓旭东 Contents0.string 我叫邓旭东 Contents0.string2: 邓旭东,Contents1 今年27岁 Contents1.string 今年27岁 Contents1.string2:-2 27,re库-正则表达式在爬虫的应用,html = 我叫邓旭东 今年 27岁 Import re pattern = pile(r 我叫(.*?) 今年 (.*?)岁 ) result = re.findall(pattern, html) result (邓旭东,27),re 正则表达式常用匹配规则,. 匹配任意字符(“n”除外) a.c abc d 数字0-9 adc a1c * 匹配前一个字符的0或无限次 ab* c ac或abc 或abbc + 匹配前一个字符的1或无限次 ab+ c abc 或abbc ? 匹配前一个字符0或1次 abc? ab或abc,re库方法,pattern = pile(string) #以下为匹配所用函数 re.findall(pattern, string) 返回列表 re.match(pattern, string) 从string的开头匹配,匹配成功立即返回pattern的内容, 不再匹配string剩余部分 re.search(pattern, string) 从string全部匹配,如果匹配不成功返回none, 匹配成功返回一个或多个匹配内容 re.split(pattern, string) re.sub(pattern, repl, string),目录,一、引言,三、网页请求,四、网页解析,五、开始采集,六、如何应对反爬,七、高级爬虫,爬虫工作原理 HTML Python基本知识,找规律构建url requests库,如何解析网页 BeautifulSoup re库的使用,条件、循环语句 try。Except异常处理 数据存储,控制访问频率 伪装装成浏览器 使用代理IP,selenium+Firefox(36版) 抓包应对动态网页,二、准备知识,for语句,用来循环,重复爬虫动作 1、遍历网址,依次对网址发送请求 2、解析网页时,返回的是列表或生成器的对象, 通过for遍历对象中的元素并对每个元素进行操作,if条件判断语句,用来解决爬虫过程中哪些要,哪些不要的问题 哪些执行,哪些不执行的问题,try。Except异常处理。,情景: 你设计的程序在完美情况下当然不会出错, 但现实是经常有意外出现,一遇到问题就程序就退出运行。 解决办法: try except异常处理, 增强你爬虫的健壮性, 解决遇到问题程序停止,数据存储,初级的爬虫,大多都是为了获得文本数据, 只需要用csv 、txt文件存储即可 import csv csvFile = open(/apple/usr/python/data.csv,a+,newline=,encoding=utf-8) writer = csv.writer(csvFile) writer.writerow(colum1,colum2,colum3) writer.writerow(colum1,colum2,colum3) csvFile.close(),数据存储,f = open(/apple/usr/python/data.txt,a+, encoding=utf-8) f.write(sssss) f.close 也可以使用: with open(/apple/usr/python/data.txt,a+, encoding=utf-8) as f: f.write(sssss),开始采集数据,目录,一、引言,三、网页请求,四、网页解析,五、开始采集,六、如何应对反爬,七、高级爬虫,爬虫工作原理 HTML Python基本知识,找规律构建url requests库,如何解析网页 BeautifulSoup re库的使用,条件、循环语句 try。Except异常处理 数据存储,控制访问频率 伪装装成浏览器 使用代理IP,selenium+Firefox(36版) 抓包应对动态网页,二、准备知识,如何应对反爬,伪装成浏览器,控制访问频率,使用代理IP,目录,一、引言,三、网页请求,四、网页解析,五、开始采集,六、如何应对反爬,七、高级爬虫,爬虫工作原理 HTML Python基本知识,找规律构建url requests库,如何解析网页 BeautifulSoup re库的使用,条件、循环语句 try。Except异常处理 数据存储,控制访问频率 伪装装成浏览器 使用代理IP,selenium+Firefox(36版) 抓包应对动态网页,二、准备知识,什么是动态网页,selenium+Firefox(36版),Win/mac 火狐资源链接,Selenuim默认支持firefox浏览器,不需要再安装浏览器驱动。 selenium对火狐浏览器新版本支持不好,经常无法自动化操作。经测试36版本,完美运行。,Selenium基本知识,from selenium import webdriver from bs4 import BeautifulSoup 初始化浏览器 driver = webdriver.Firefox() 打开某个网址

温馨提示

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

评论

0/150

提交评论