python爬虫 您所在的位置:网站首页 python反爬虫原理与破解 python爬虫

python爬虫

2023-07-27 12:27| 来源: 网络整理| 查看: 265

爬取百度主页数据

我们直接用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)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有