爬虫基础系列urllib——构造请求头(3)

爬虫基础系列urllib——构造请求头(3)_第1张图片
u=2998242485,1841996514&fm=27&gp=0.jpg

爬虫与反爬虫

  • 爬虫:自动获取网站数据的程序
  • 反爬虫:使用技术手段防止爬虫程序爬取数据

反扒机制1

  • 判断用户是否是浏览器访问
  • urllib.request.urlopen(url)方法采用的是直接通过代码,而不是浏览器访问页面,那么反爬虫机制很容易识别,从而禁止爬虫爬取。

应对办法

  • 爬虫加上第一层伪装,伪装成浏览器对网站进行爬取。
  • request.Request(url,headers=header)创建自定义请求对象,这里需要注意的是,header构造的User-Agent是一个字典形式的结构。
  • 这里用到user-agent 请求头信息,请求头user-agent打开一个网页,按F12,点击network 或者网络(浏览器不一样,名称略有区别),可以看到Request Headers中User-Agent数据,将这个数据传入请求中,达到模拟浏览器的目的,同样的User-Agent可以在网上搜索各种类型的浏览器的请求头信息。
  • 完整代码:
#伪装浏览器的爬虫
from urllib import request
import re

url="http://www.baidu.com/"

#构造请求头信息
header={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}
req=request.Request(url,headers=header)
#发送请求.获取响应信息
reponse=request.urlopen(req).read().decode() #解码---(编码encode())
pat=r"(.*?)"
data=re.findall(pat,reponse)
print(data[0])#由于data返回的是列表形式的数据用data[0]直接取值

运行返回的结果为:

百度一下 你就知道

这里会发现数据外没有了[]。


爬虫基础系列urllib——构造请求头(3)_第2张图片
图片来自网络.png

爬虫基础系列urllib(2)
爬虫基础系列urllib——构造随机请求头(4)

你可能感兴趣的:(爬虫基础系列urllib——构造请求头(3))