学爬虫的第一天 淦,废了
本帖最后由 王大哈哈 于 2021-1-6 14:42 编辑今天的学习总结首先,需要了解爬虫,它是干甚滴,能干甚,违法不?嘿嘿!
我也不知道!哈哈哈哈!
爬虫呢主要分为4个流程:发起请求、获取相应内容、解析内容、保存数据!
我自己的理解呢就是:打开网页,把想要的内容复制下来,然后保存到自己想保存的地方!比较粗暴简单
嘿嘿!
今天学习使用到了urllib库中的requset.urlopen()函数和requset.Requset()
没学习爬虫之前觉得,哎呀,这肯定很难,用代码访问网页,真麻烦。
今天学习了一下! 嗯! python真香!!这些库,太好用了!requset.urlopen("网页链接")这个函数能够直接打开网页,并且把网页的源代码直接爬取下来。
我就好奇的用百度试了试
import urllib.request
request = urllib.request.urlopen("http://www.baidu.com")
print(request)运行以后返回的是:
<http.client.HTTPResponse object at 0x000001D73155B1F0>返回的类型是个object的类型!!
接着继续查看它的内容:
print(request.read().decode('utf-8'))
然后百度网的源代码就出来了!!
我寻思着,这玩意这么神奇??
我就又试了试豆瓣网!
结果遇到了!人生中第一个
418!
我寻思这是个啥玩意!然后补课补课在补课!才知道
原来你发现我是爬虫了啊!
解决418错误也很简单,就是伪装一下
“User-Agent”这也是学习到的第二个知识点。
那么“User-Agent”是啥啊!我们 可以打开百度,按F12根据截图操作啊 你会得到:
单击一下 绿色的线条就能看到我们要找的这个看不懂的一串字符了
然后我就看到 有什么win10、x64、谷歌浏览器啥啥的,在结合这百度 我才知道
这是访问网页的信息,它会将各种各样的信息传递给服务器,服务器判断,访问的是不是真人。
那我寻思着,我用python访问肯定就是显示我是python了
既然你发现我了那我也要尊重你进行一下伪装: head = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
}
req = urllib.request.Request(url,headers=head)
response = urllib.request.urlopen(req)
print(response.read().decode('utf-8'))
head的定义是一个字典!
谨记!User-Agen这里一定不能拼错,多个空格也不行!
运行代码再去访问,豆瓣的源代码就给我了
urllib.request.Request()这个函数呢,个人理解:
就是将我们想爬取的网页链接,伪装的数据统统放到我们定义的head中,当然我们的head这个字典中还可以添加其它的截图上的元素,添加的越多伪装的就越像!
大佬们勿喷!还请指点!
毕竟我也刚开始学习(公司偷摸学真难!!)
自己的总结!有好的知识点还请分享一下。感谢!
http协议head详解
Header 解释 示例
Accept-Ranges 表明服务器是否支持指定范围请求及哪种类型的分段请求 Accept-Ranges: bytes
Age 从原始服务器到代{过}{滤}理缓存形成的估算时间(以秒计,非负) Age: 12
Allow 对某网络资源的有效的请求行为,不允许则返回405 Allow: GET, HEAD
Cache-Control 告诉所有的缓存机制是否可以缓存及哪种类型 Cache-Control: no-cache
Content-Encoding web服务器支持的返回内容压缩编码类型。 Content-Encoding: gzip
Content-Language 响应体的语言 Content-Language: en,zh
Content-Length 响应体的长度 Content-Length: 348
Content-Location 请求资源可替代的备用的另一地址 Content-Location: /index.htm
Content-MD5 返回资源的MD5校验值 Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==
Content-Range 在整个返回体中本部分的字节位置 Content-Range: bytes 21010-47021/47022
Content-Type 返回内容的MIME类型 Content-Type: text/html; charset=utf-8
Date 原始服务器消息发出的时间 Date: Tue, 15 Nov 2010 08:12:31 GMT
ETag 请求变量的实体标签的当前值 ETag: “737060cd8c284d8af7ad3082f209582d”
Expires 响应过期的日期和时间 Expires: Thu, 01 Dec 2010 16:00:00 GMT
Last-Modified 请求资源的最后修改时间 Last-Modified: Tue, 15 Nov 2010 12:45:26 GMT
Location 用来重定向接收方到非请求URL的位置来完成请求或标识新的资源 Location: http://www.zcmhi.com/archives/94.html
Pragma 包括实现特定的指令,它可应用到响应链上的任何接收方 Pragma: no-cache
Proxy-Authenticate 它指出认证方案和可应用到代{过}{滤}理的该URL上的参数 Proxy-Authenticate: Basic
refresh 应用于重定向或一个新的资源被创造,在5秒之后重定向(由网景提出,被大部分浏览器支持)
Refresh: 5; url=
http://www.zcmhi.com/archives/94.html
Retry-After 如果实体暂时不可取,通知客户端在指定时间之后再次尝试 Retry-After: 120
Server web服务器软件名称 Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)
Set-Cookie 设置Http Cookie Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1
Trailer 指出头域在分块传输编码的尾部存在 Trailer: Max-Forwards
Transfer-Encoding 文件传输编码 Transfer-Encoding:chunked
Vary 告诉下游代{过}{滤}理是使用缓存响应还是从原始服务器请求 Vary: *
Via 告知代{过}{滤}理客户端响应是通过哪里发送的 Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
Warning 警告实体可能存在的问题 Warning: 199 Miscellaneous warning
WWW-Authenticate 表明客户端请求实体应该使用的授权方案 WWW-Authenticate: Basic
HTTP Request的Header信息
1、HTTP请求方式
如下表:
方 法
描 述
GET
向Web服务器请求一个文件
POST
向Web服务器发送数据让Web服务器进行处理
PUT
向Web服务器发送数据并存储在Web服务器内部
HEAD
检查一个对象是否存在
DELETE
从Web服务器上删除一个文件
CONNECT
对通道提供支持
TRACE
跟踪到服务器的路径
OPTIONS
查询Web服务器的性能 爬虫爬的好,牢饭吃到饱:lol 想学习 怕误入歧途 就没敢学:lol 我学习了一下,没有坚持下去。 楼主学习的哪个平台的课程啊 加油,早日做出抢购神器。 我问一下
你在哪里学的呀?
第一天就开始学爬源码的吗?
我学的是爬内容什么的 中文和英文单词我全部看得懂,但是这么大个大个的字放到一起就有一种看弹幕的感觉 爬虫爬的好,牢饭吃到饱,加油小伙子