python爬虫——反反爬百度网页教程

爬取百度主页数据

我们直接用python自带的url.request.urlopen是不能顺利获取百度网页的数据的,我们会得到如下的结果

import urllib.request
response = urllib.request.urlopen(https://www.baidu.com/)
print(response.read())

运行后得到的结果是: 很明显个对应百度的源码是不一样的,百度网页设置的反扒机制

应用url.request.Request重构网点的user agent,即可爬取数据

分三个步骤:1.创建请求对象,对应的代码块:

headers = {
          
   User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36}
 req = urllib.request.Request(url,headers=headers)

###上面的headers为一个用户代理,用于取代人工,意思是告诉网页是人在获取网页源代码而不是程序在获取源代码(也就是‘欺骗网页,不是在爬取数据,是人在读取数据,但是实际是代码在爬取源代码’)

###urllib.request.Request意思是把url的代理替换成人工,也就是上面所说的‘欺骗’,req创建相应的请求对象

2.获取响应对象:
response = urllib.request.urlopen(req)

把上面创建的对象打开

3.读取响应对象:
html = response.read().decode(utf-8)

下面展示完整的代码:

# url = http://www.baidu.com/
# headers = {User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36}#字典
# #创建请求对象
# req = urllib.request.Request(url,headers=headers)
# #获取响应对象
# response = urllib.request.urlopen(req)
# #读取响应对象的内容
# html = response.read().decode(utf-8)
# print(html)
经验分享 程序员 微信小程序 职场和发展