python web服务器怎么获取用户信息_Python爬虫之web内容获取(一)

Python爬虫之web内容获取:

一:简单的向服务器发送请求方式: # -- coding:utf-8 --

import urllib2

向指定的url 发送请求,并返回响应的类文件对象

response = urllib2.urlopen("http://www.baidu.com")

服务器返回的对象支持python文件对象的方法

read()方法:读取文件的全部类容,返回字符串

html = response.read()

print html

但这样的方式往往容易被反爬虫者发现,因此我们需要进一步的伪装。

反爬虫第一步:

首先,我们需要了解浏览器在向服务器发送请求时做了什么:这里我们可以用Fiddler抓包工具来实现下载安装配置好Fiddler(具体配置方法)后,当我们浏览器端向服务器发送请求时(如在浏览器访问http://www.baidu.com),在Fiddler抓包工具抓到的文件中对应的百度链接的文件所对应的此处便能得到如下的Header请求信息。

Fiddler抓包工具Header请求信息

# 请求方式(GET / POST /...)

GET https://www.baidu.com?&t=1520930345744&sid=1455_13549_21088_20928 HTTP/1.1

# 指定被请求资源的Internet主机和端口号

Host: www.baidu.com

# 链接方式( keep-alive / close /...)

Connection: keep-alive

# 浏览器端可以接受的媒体类型

Accept: text/plain, /; q=0.01

X-Requested-With: XMLHttpRequest

# User-Agent告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36

Referer: https://www.baidu.com/

# 览器申明自己接收的编码方法,通常指定压缩方法

Accept-Encoding: gzip, deflate, br

Accept-Language: zh-CN,zh;q=0.9

#本地Cookie信息

Cookie: BAIDUID=955895CE3A39E426AF6E5CF53F2B:FG=1; BIDUPSID=955895CE3A39E426AF53F2B;

拿到浏览器请求的Header信息后,接下来我们便可以模拟浏览器访问服务器了如下:

模拟get请求: # -*- coding:utf-8 -*-

from urllib import request,parse

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

kwd = input("请输入需要查询的关键字:")

wd = {"wd":kwd}

#将一个字典类型的数据转化为字符串类型(url: "wd=875398%jsjdj%")

wd = parse.urlencode(wd)

fill_url = url + "?" + wd

header = {

"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36"

}

#通过urllib2.Resquest()方法构造一个请求对象

req = request.Request(fill_url,headers = header)

#向指定的url 发送请求,并返回响应的类文件对象

response = request.urlopen(req)

#服务器返回的对象支持python文件对象的方法

#read()方法:读取文件的全部类容,返回字符串

html = response.read()

print(html)

模拟post请求\利用本地Cookie获取需要登陆后才能获取的内容: #!/usr/bin/python

#-*- coding:utf-8 -*-

from urllib import request,parse

#import json

url = "https://mail.qq.com/cgi-bin/frame_html?t=frame_html&sid=3-L3dxbAFqMTDGY8&url=/cgi-bin/mail_list?folderid=8%26folderkey=8%26page=0%26t=mail_list_group%26ver=236935.0%26cachemod=maillist%26cacheage=7200%26r="

header = {

"Host": "mail.qq.com",

"Connection": "keep-alive",

"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36",

"Accept": "image/webp,image/apng,image/*,*/*;q=0.8",

"Accept-Language": "zh-CN,zh;q=0.9",

"Cookie": "RK=k0HCcQgeOg; pgv_pvi=4384783360; tvfe_boss_uuid=e72e765a79d2f90f; 。。。*",

}

req = request.Request(url,headers = header)

print(request.urlopen(req).read().decode('utf-8'))

获取 Ajax 加载的 json 数据: #!/usr/bin/python

#-*- coding:utf-8 -*-

from urllib import request,parse

import json

url = "https://movie.douban.com/j/chart/top_list?type=11&interval_id=100%3A90&action"

header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36"}

formData = {

"start":"0",

"limit":"5"

}

data = parse.urlencode(formData).encode('UTF-8')

req = request.Request(url,data = data,headers = header)

print(request.urlopen(req).read().decode('UTF-8'))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值