网络爬虫的第一步结束根据url 获取 网页html信息在python3可以去使用urllib.request 和requests 进行网页数据获取 这里我们用request urllib 库一般苦涩难用不推荐新手用 requests 库是第三方库,需要我们自己安装 pip3 install requests
1.获取网页内容
import requests
url = 'https://www.bxwxorg.com/read/20/'
response = requests.get(url)
print(response.headers)
print(response.cookies)
print(response.status_code)
print(response.text)
print(response.content)
text 返回的是Unicode 型的数据
content 返回的是是二进制的数据
在Python3默认编码是 unicode,utf-8 可以看做是 unicode 的一个扩展集。所以text可以直接输出网页内容,而 content 输出的是字节码
编码问题
Python3 当遇到 gbk 编码的网页时,如果未指定编码类型,会出现乱码,这时候有以下两种方法解决乱码:
response.encoding = 'gbk'
print(response.text)
print(response.content.decode('gbk'))
爬虫伪装 当你的爬虫不能被服务器识别为真正的浏览器访问时,服务器则不会给你返回正确的信息,这个时候就必须对爬虫代码进行伪装。
HTTP部分请求头部(HEADER)包含: Connection: keep-alive Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8 Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9 Cache-Control: max-age=0 Host: www.baidu.com Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
Connection 允许客户端和服务器指定与请求/响应连接有关的选项:keep-alive:长连接;
Accept
指定客户端能够接受的内容类型,在这唯一要提醒的就是它只是建议服务器,而并非就是你写成什么他就返回给你什么。
Accept-Encoding
浏览器发给服务器,声明浏览器支持的编码类型
Accept-Language
请求头允许客户端声明它可以理解的自然语言,以及优先选择的区域方言。
Upgrade
给出了发送端可能想要"升级"使用的新版本和协议
User-Agent
向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核等信息的标识。给出发送端使用的MIME版本
referer
用于告诉服务器我是从哪个页面链接过来的。用于统计访问量、防外连接等
设置 header
headers = {‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36’, ‘Referer’: ‘http://www.quanshuwang.com/book/44/44683’, ‘Accept’: ‘text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8’, ‘Accept-Encoding’: ‘gzip, deflate, br’, ‘Accept-Language’: ‘zh-CN,zh;q=0.9’ }
设置headers
response = requests.get(url = url, headers = headers)
爬虫登陆 1.通过账号密码登录 login_url = ‘https://xxxxx.com/login’
设置登录名与密码
form_data = {‘username’:‘’, ‘password’:'’} headers = {‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36’, ‘Accept’: ‘text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8’, ‘Accept-Encoding’: ‘gzip, deflate, br’, ‘Accept-Language’: ‘zh-CN,zh;q=0.9’ } response = requests.post(login_url, data=form_data, headers=headers)
2.通过历史cookie登陆
raw_cookies = "k1=v1; k2=v2; k3=v3";
cookies = {}
for line in raw_cookies.split(';'):
key,value=line.split('=',1)
cookies[key]=value
login_url = 'http://xxxxxx.com'
response = requests.post(login_url,cookies=cookies)
print(response.text)
|