大数据爬虫技术第4章 爬取网页数据.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
GET请求一般用于向服务器获取数据,比如说,我们用百度搜索传智播客。此时,如果使用Fiddler查看HTTP请求,发现有个GET请求的格式如下:/s?wd=%E4%BC%A0%E6%99%BA%E6%92%AD%E5%AE%A2在这个请求中,“?”后面的字符串就包含了我们要查询的关键字“传智播客”。当访问有道词典翻译网站进行词语翻译时,会发现不管输入什么内容,其URL一直都是不变的。通过使用Fiddler观察,发现该网站向服务器发送的是POST请求。当使用有道词典翻译“Python”

GET请求一般用于向服务器获取数据,比如说,我们用百度搜索传智播客。 此时,如果使用Fiddler查看HTTP请求,发现有个GET请求的格式如下: /s?wd=%E4%BC%A0%E6%99%BA%E6%92%AD%E5%AE%A2 在这个请求中,“?”后面的字符串就包含了我们要查询的关键字“传智播客”。 当访问有道词典翻译网站进行词语翻译时,会发现不管输入什么内容,其URL一直都是不变的。 通过使用Fiddler观察,发现该网站向服务器发送的是POST请求。 当使用有道词典翻译“Python”时,返回的结果是一个JSON字符串。 01 什么是urllib库 02 快速使用urllib爬取网页 03 使用urllib实现数据传输 04 添加特定Headers—请求伪装 05 代理服务器 06 超时设置 如果不是从浏览器发出的请求,我们是不能获得响应内容的。针对这种情况,我们需要将爬虫程序发出的请求伪装成一个从浏览器发出的请求。 伪装 或 ...... 伪装浏览器需要自定义请求报头,也就是在发送Request请求时,加入特定的Headers。 user_agent = {User-Agent : Mozilla/5.0 (compatible; MSIE 9.0; Windows NT6.1; Trident/5.0)} request = urllib.request.Request(url, headers = user_agent) request.add_header(Connection, keep-alive) 01 什么是urllib库 02 快速使用urllib爬取网页 03 使用urllib实现数据传输 04 添加特定Headers—请求伪装 05 代理服务器 06 超时设置 思考 很多网站会检测某一段时间某个IP的访问次数,如果同一IP访问过于频繁,那么该网站会禁止来自该IP的访问。碰到这种情况要怎么办呢? 我们可以使用代理服务器,每隔一段时间换一个代理。如果某个IP被禁止,那么就可以换成其他IP继续爬取数据,从而可以有效解决被网站禁止访问的情况。 结 论 但是,urlopen不支持代理、Cookie等其他的 HTTP/HTTPS高级功能,所以如果要想设置代理,不能使用自带的urlopen,而是要自定义opener。 opener是urllib.request.OpenerDirector类的对象,我们之前一直都在使用的urlopen,就是模块帮我们构建好的一个opener。 自定义opener需要执行下列三个步骤: 第1步 使用相关的Handler处理器创建特定功能的处理器对象。 第2步 通过urllib.request.build_opener()方法使用这些处理器对象创建自定义的opener对象。 第3步 使用自定义的opener对象,调用open方法发送请求。 如果程序里所有的请求都使用自定义的opener,可以使用urllib2.install_opener()?将自定义的opener对象定义为全局opener,表示之后凡是调用urlopen,都将使用自定义的opener。 我们可以使用urllib.request中的ProxyHandler方法来设置代理服务器。 httpproxy_handler = urllib.request.ProxyHandler( {http : 1:80}) opener = urllib.request.build_opener(httpproxy_handler) 免费开放代理的获取基本没有成本,我们可以在一些代理网站上收集这些免费代理,测试后如果可以用,就把它收集起来用在爬虫上面。免费代理网站主要有以下几个: 西刺免费代理IP 快代理免费代理 Proxy360代理 全网代理IP 如果代理IP足够多,就可以像随机获取User-Agent一样,随机选择一个代理去访问网站。 import random proxy_list = [{http : 1:80}, {http : 1:80}, {http : 1:80}, {http : 1:80}, {http : 1:80}] # 随机选择一个代理 proxy = random.choice(proxy_list) 免费开放代理一般会有很多人都在使用,而且代理有寿命短,速度慢,匿名度不高等缺点。所以,专业爬虫工程师或爬虫公司会使用高品质的私密代理,这些代理通常需要找专门的代理供应商购买,再通过用户名/密码授权使用。 01 什么是urllib库 02 快速使用urllib爬取网页 03 使用urllib实现数据传输 04

文档评论(0)

ZuiFeng + 关注
实名认证
文档贡献者

分享文档,资源共享

1亿VIP精品文档

相关文档