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

liftword2个月前 (03-26)技术文章14

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

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

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

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

一、Herders 属性

爬取CSDN博客

爬取结果

urllib.error.HTTPError: HTTP Error 403: Forbidden

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

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

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

嗨喽:正在学习python的小伙伴或者打算学习的,可以私信小编“07”领取资料!

  1. 往下拖动 我们会看到“User-Agent”字样的一串信息,没错 这就是我们想要的东西。我们将其复制下来。
  2. 此时我们得到的信息是:”Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36”
  3. 接下来我们可以用两种方式来模拟浏览器访问网页。

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

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

嗨喽:正在学习python的小伙伴或者打算学习的,可以私信小编“07”领取资料!

上面代码中我们先定义一个变量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开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“07”即可领取。

相关文章

干货|Python大佬手把手带你破解哔哩哔哩网滑动验证(上篇)

/1 前言/ 有爬虫经验的各位小伙伴都知道,正常我们需要登录才能获取信息的网站,是比较难爬的。原因就是在于,现在各大网站为了反爬,与爬虫机制斗智斗勇,一般的都加入了图片验证码、滑动验证码之类的干扰,让...

Python合集之Python跳转语句(一)

在上一节的合集中,我们了解了Python循环嵌套语句的相关知识,本节我们将进一步了解一下Python跳转语句中的break的相关知识。 当循环条件一直满足时,程序会一直执行下去,如果希望在中间离开循环...

python笔记八:跳转语句continue

跳转语句:break continue'''cbreak 跳出循环。continue语句:不满足条件跳过(跳回循环体)'''#例:求1---100以内不是5的倍数的和# sum_namber=0# f...

「好课堂在线」pygame事件处理游戏界面进行全屏切换

作者:好课堂数学编程陈老师 我们在第一个程序里使用了如下的语句screen = pygame.display.set_mode((800, 800), 0, 32)也讲述了各个参数的意思,当我们把第二...

Python的selenium实现切换框架frame的方法

1. 介绍1.1 介绍福哥在使用selenium实现页面爬取的时候发现遇到包含框架(frame)的网页时候就无法通过find_xxx方法得到页面上的元素,这可真是麻烦了啊!福哥在使用F12调试前端的时...

Python自学之Pywebio(四)添加菜单并增加菜单链接至新页面

Python自学之Pywebio(三)增加button按钮前面文章我们规划了系统框架、编写了主体架构、新增了按钮。本章我们新增菜单并跳转到新页面,打开一个表格。我们先学两个函数:put_collaps...