python怎么模拟浏览器交互_干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏)...

今天为大家带来的内容是:干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏)

文章主要介绍了python爬虫模拟浏览器的两种方法,结合实例形式分析了Python爬虫模拟浏览器的两种常见操作技巧与使用注意事项,需要的朋友可以参考下!!!

本文实例讲述了python爬虫模拟浏览器的两种方法。分享给大家供大家参考,具体如下:

爬虫爬取网站出现403,因为站点做了防爬虫的设置

一、Herders 属性

爬取CSDN博客

爬取结果urllib.error.HTTPError: HTTP Error 403: Forbidden

这就说明CSDN做了一些设置,来防止别人恶意爬取信息

所以接下来,我们需要让爬虫模拟成浏览器

任意打开一个网页,比如打开百度,然后按F12,此时会出现一个窗口,我们切换到Network标签页,然后点击刷新网站,选中弹出框左侧的“www.baidu.com”,即下图所示:

往下拖动 我们会看到“User-Agent”字样的一串信息,没错 这就是我们想要的东西。我们将其复制下来。

此时我们得到的信息是:”Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36”

接下来我们可以用两种方式来模拟浏览器访问网页。

二、方法1:使用build_opener()修改报头

由于urlopen()不支持一些HTTP的高级功能,所以我们需要修改报头。可以使用urllib.request.build_opener()进行,我们修改一下上面的代码:

上面代码中我们先定义一个变量headers来储存User-Agent信息,定义的格式是(“User-Agent”,具体信息)

具体信息我们上面已经获取到了,这个信息获取一次即可,以后爬取其他网站也可以用,所以我们可以保存下来,不用每次都F12去找了。

然后我们用urllib.request.build_opener()创建自定义的opener对象并赋值给opener,然后设置opener的addheaders,就是设置对应的头信息,格式为:“opener(对象名).addheaders = [头信息(即我们储存的具体信息)]”,设置好后我们就可以使用opener对象的open()方法打开对应的网址了。格式:“opener(对象名).open(url地址)”打开后我们可以使用read()方法来读取对应数据,并赋值给data变量。

得到输出结果:

三、方法2:使用add_header()添加报头

除了上面的这种方法,还可以使用urllib.request.Request()下的add_header()实现浏览器的模拟。

先上代码:

好,我们来分析一下:

导入包,定义url地址我们就不说了,我们使用urllib.request.Request(url)创建一个Request对象,并赋值给变量req,创建Request对象的格式:urllib.request.Request(url地址)

随后我们使用add_header()方法添加对应的报头信息,格式:Request(对象名).add_header(‘对象名','对象值')

现在我们已经设置好了报头,然后我们使用urlopen()打开该Request对象即可打开对应的网址,多以我们使用

data = urllib.request.urlopen(req).read()打开了对应的网址,并读取了网页内容,并赋值给data变量。

以上,我们使用了两种方法实现了爬虫模拟浏览器打开网址,并获取网址的内容信息,避免了403错误。

值得我们注意的是,方法1中使用的是addheaders()方法,方法2中使用的是add_header()方法,注意末尾有无s以及有无下划线的区别。

以上就是本文的全部内容啦!!!希望本文所述对大家Python程序设计有所帮助。

嗨喽:正在学习python的小伙伴或者打算学习的,可以看下面领取资料!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276617.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue-cli3

github:https://github.com/vuejs/vue-cli org:https://cli.vuejs.org/ guide:https://cli.vuejs.org/guide/ config:https://cli.vuejs.org/config/ 转载于:https://www.cnblogs.com/veritas-sj/p/10147789.html

Indy中判断邮件来源

首先从TidMessage中获得邮件的头信息: strHeader:aIdMessage.Headers.text; 然后,用正则表达式取出Received: vReceiveIP:GetNeedStrByPerlReg(strHeader,(Received:)(.)(])); 再取出X-Originating-IP: vOriIP:GetNeedStrByPerlReg(strHea…

用jQuery实现弹出窗口/弹出div层

原文链接:http://hi.baidu.com/awz_tiger/item/863cfc10c4bb0f6171d5e8d9 http://blog.163.com/qiuxinke2006126/blog/static/24885580201131763139536/ http://hi.baidu.com/kilwin/blog/item/f4cfaf2695375920c9955947.html 用div层代替传统的弹出窗口已经变得很…

模块定义文件导出类_浓缩的就是精华——ES6模块精炼讲解

概述在 ES6 前, 实现模块化使用的是 RequireJS 或者 seaJS(分别是基于 AMD 规范的模块化库, 和基于 CMD 规范的模块化库)。ES6 引入了模块化,其设计思想是在编译时就能确定模块的依赖关系,以及输入和输出的变量。ES6 的模块化分为…

关于快速开发和设计应用系统的一些个人的意见

作为程序员,经常会为我们的客户去开发和设计各种应用系统,比如OA /CRM/物流调度/客户服务/电子政务。。。及各种管理信息系统,我们经常会去开发和实现这样的一些系统,每周、每月、每年经常都要去做这样的一些开发工作,…

Jquery1.6版本后attr的变化

原文链接:http://www.cnblogs.com/-run/archive/2011/11/16/2251569.html Jquery1.6版本后attr的变化 Jquery1.6版本后 attr 改动后的效果: jquery1.6版本: 下文来自www.jquery.com The difference betweenattributes and properties can b…

idea main scanner 输入_哇晒,你竟然不知道idea的 Live Templates

最近公司新近来一名程序猿,在写代码时,美美写到System.out.println的时候,都要一母不差的用键盘敲上去,我问他你之前有用过eclipse中的快捷方法syso吗?于是,我给他介绍了一下,在idea中如何自定义…

Android开发需要了解的 IM 知识

引言即便在通讯如此发达的今天,IM 也依然是诸多场景下非常重要的基础能力。因此做为 一名 Android 开发,不可避免的会遇到一些IM 相关的需求或问题。本文以一个Android开发的角度来讲述IM 开发相关的基础知识。想要阅读更多技术干货、行业洞察&#xff0…

偷梁换柱做自己的封装系统

偷梁换柱做自己的封装系统!菜鸟一开始都想把自己的信息加到系统里,但封装系统只会一点!但我们可“拿来”,我们可以用偷梁换柱的方法来修改别人的系统,本文以雨林的GHOST5.0系统为例。一、准备工作1、当然是下载一个自己…

JQuery 1.6+ checkbox 状态选择

示例&#xff1a; HTML: <form><table><tr><td><input type"checkbox" id"select_all"/></td></tr><tr><td><input type"checkbox" name"select[]"/></td></…

台电u盘量产工具_简单几步,让U盘起死回生

如今&#xff0c;虽说云存储风靡&#xff0c;但U盘仍存在价值&#xff0c;毕竟在很多场合并不方便上网&#xff0c;即便如此网上存储有时也并不方便&#xff0c;也不安全。与此同时&#xff0c;如果是大文件存储&#xff0c;云盘上传和下载速度非常慢&#xff0c;并不适合海量数…

PXC集群常见错误(一)

欢迎关注MySQL 8.0必知必会系列课程。MySQL8.0必知必会-自动化部署 https://edu.51cto.com/course/16368.htmlMySQL8.0必知必会之参数标准化配置 https://edu.51cto.com/course/16358.html1.Cant start server: Bind on TCP/IP port: Address already in use…

获取GridView中RowCommand的当前选中行的索引或主键Id

获取GridView中RowCommand的当前索引行 前台添加一模版列,里面添加一个LinkButton前台 (如果在后台代码中用e.CommandArgument取值的话前台代码就必须在按钮中设置CommandArgument的值&#xff0c;值为绑定的数据库字段<asp:TemplateField HeaderText"操作"> …

系统架构师 项目经理 哪个更有前景_中央空调加地暖与五恒系统,哪个更省钱?...

每逢严冬酷暑,人们都会感叹空调是最伟大的发明,并且随着科技发展还在不断进化。从烤火取暖到空调和地暖的供暖,从纸扇电扇的吹风到空调的制冷,人们的需求正在不断提高,于是,为了满足人们的需求&#xff0c;市场上又衍生出了家装五恒系统。 恒温、恒湿、恒氧、恒洁、恒静这…

软件架构基本原则

软件架构本质上是绘制一幅复杂素描所打的草稿&#xff0c;我还说&#xff0c;如果你罩得住&#xff0c;可以不需要这个草稿。但这只是“理论上”&#xff0c;我们写软件&#xff0c;基本上不是在写只有几千行的代码的小程序&#xff0c;而是写数千万行的大型程序。《道德经》说…

Smarty目录结构和子目录路径问题

原文链接&#xff1a;http://bbs.csdn.net/topics/80223905 问题 1).最初在模板文件中使用了绝对路径&#xff08;相对于站点根的路径 ).如在system_info.tpl中图片是这样显示的<img src"/templates/default/images/logo.gif"/>这样当系统发布时&#xff0c;…

c++直角坐标系与极坐标系的转换_一篇阅读量高达2百6十多万的关于坐标系和投影的相关知识探讨...

本文转载于CSDN作者rsyaoxin这是一篇关于坐标和投影的「神文」截止目前浏览量已达2698239是相关文章中不可打破的神话...文末有本文作者推荐的两款坐标转换的小工具下载链接回想一下&#xff0c;接触遥感专业也有几个年头了&#xff0c;而现在越来越偏离遥感了&#xff0c;突然…

c# xmlhttp POST提取远程webservice数据

public string cancel(string StudentID,string Mobile){string datanull;data "<?xml version1.0 encodingutf-8?><soap:Envelope xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:xsdhttp://www.w3.org/2001/XMLSchema xmlns:soaphttp://schemas.…

Javascript实现的左右滑动菜单

原文链接&#xff1a;http://www.cnblogs.com/miqi2214/archive/2009/04/28/1445308.html Javascript实现的左右滑动菜单 先看Demo便于理解&#xff1a;请大家往这里看 业务需求&#xff1a; 1. 菜单个数不固定&#xff0c;当菜单个数长度小于给定范围宽度&#xff0c;则左右移…

查询用户分配角色TCODE

s_bce_68001419 转载于:https://www.cnblogs.com/yangliang/archive/2009/04/13/1434862.html