设置Headers属性模拟浏览器

1.使用build_opener()修改报头 

报头即请求报头(Request Header)是在发送 HTTP 请求时包含的一系列信息(按F12在网络下面可以找到,如果没有出现就按F5刷新),用于告诉服务器关于请求的详细信息和客户端的身份标识。它通常以键值对的形式组成,每个键值对表示一个具体的请求头字段和对应的值。

请求报头中的一些常见字段包括:

User-Agent:用于标识发起请求的客户端身份信息,包括操作系统、浏览器等。
Accept:表示客户端能够接受的响应内容类型,通常指定 MIME 类型。
Referer:表示当前请求的来源页面的 URL。
Cookie:用于在客户端和服务器之间传递会话信息的标识符。
Authorization:在进行身份验证时用于传递认证凭证。
Content-Type:表示请求体中发送的数据类型。

import urllib.request
import urllib.parse

headers = ("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0")
keyword = ""
url = "https://bbs.pinggu.org/" + urllib.parse.quote(keyword)

# 使用build_opener()修改报头
opener = urllib.request.build_opener()
opener.addheaders = [headers]
data = opener.open(url).read()

with open("7.13.html", "wb") as f:
    f.write(data)

上述代码爬取了经管之家的页面,并将页面保存在一个叫7.13的HTML文件中,keyword是搜索的关键词。

2.用add_header()添加报头

import urllib.request
import urllib.parse

headers = ("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0")
keyword = ""
url = "https://bbs.pinggu.org/" + urllib.parse.quote(keyword)

# 使用add_header()添加报头
req = urllib.request.Request(url)
req.add_header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0")
data = urllib.request.urlopen(req).read()

with open("7.13.html", "wb") as f:
    f.write(data)

 

3.设置超时

 

 

import urllib.request

url = "https://bbs.pinggu.org/"

for i in range(1, 37):
    try:
        f = urllib.request.urlopen(url, timeout=1)
        data = f.read()
        print(len(data))
    except Exception as e:
        print("出现异常-->"+str(e))

 上述代码循环了36次,判断是否超时是1秒,没有异常会返回读取内容长度,否则会抛出错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值