ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

自学爬虫的初体验(一)

2021-05-25 13:32:16  阅读:508  来源: 互联网

标签:初体验 url res 爬虫 content code text print 自学


一、爬虫是什么

爬虫就是将互联网上的信息提取并下载到本地的过程
1、由客户端发起请求(url,data)
2、服务器响应内容(html、css、js、json)
请求方式:
1、GET
2、POST:需要发送相关的数据(包括但是不限于登录网站的密码)

二、requests库

1、一些基本用法

import requests

url='https://www.csdn.net/'
res = requests.get(url)

print(res)#<Response [200]>
print(res.content)#二进制文本流
print(res.content.decode('utf-8'))#解码:将二进制文本流转化为utf-8编码的普通字符串
print(res.text)#也是字符串,不过解码方式有所不同,更为适用
print(res.headers)#响应头信息
print(res.request.headers)#请求的头信息
print(res.status_code)#200    请求状态码
print(res.url)#https://www.csdn.net/

2、请求头信息

import requests

url='https://www.bilibili.com/'
res=requests.get(url)
code=res.status_code
print(code)#200说明请求成功


有些网页不允许爬虫程序请求,code为503,因此需要修改请求头信息,将爬虫程序伪装成通过浏览器正常访问的用户:

headers={
    'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1'
}
res=requests.get(url,headers)
code=res.status_code
print(code)

便能解决相关问题

3、POST请求

url='https://fanyi.baidu.com/sug'

headers={
    'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1'
}
data={'kw':'早'}
res=requests.post(url,headers,data)
print(res.content.decode('utf-8'))#{"errno":1000,"errmsg":"\u672a\u77e5\u9519\u8bef"}
print(res.text)#{"errno":1000,"errmsg":"\u672a\u77e5\u9519\u8bef"}
print(res.content.decode('utf-8')==res.text)#True

print(res.status_code)#200

观看的教学视频使用了百度翻译作为例子,因此我也拿百度翻译练手。
与GET请求不同的是,POST请求需要你发送一个data,在百度翻译上体现出来就是这里发送的是需要翻译的对象:

data={'kw':'早'}
res=requests.post(url,headers,data)

结果却是:

print(res.text)#{"errno":1000,"errmsg":"\u672a\u77e5\u9519\u8bef"}
print(res.content.decode('utf-8'))#{"errno":1000,"errmsg":"\u672a\u77e5\u9519\u8bef"}
print(res.content.decode('gbk'))#{"errno":1000,"errmsg":"\u672a\u77e5\u9519\u8bef"}
print(res.content.decode('utf-8')==res.text)#True
print(res.content.decode('gbk')==res.text)#True
print(res.status_code)#200
print(res.json())#{'errno': 1000, 'errmsg': '未知错误'}
print(res.text.encode('utf-8'))#b'{"errno":1000,"errmsg":"\\u672a\\u77e5\\u9519\\u8bef"}'

很神奇,无论是用utf-8解码还是gbk解码再或者用.text返回的结果都是一模一样,错误代号1000,应该是哪里不太对,不过借此可以好好想想,解码编码之类的问题,很神奇。有大佬要是知道我哪里不对还请赐教。

标签:初体验,url,res,爬虫,content,code,text,print,自学
来源: https://blog.csdn.net/apple_52664227/article/details/117231042

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有