王大哈哈 发表于 2021-1-6 13:28

学爬虫的第一天 淦,废了

本帖最后由 王大哈哈 于 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这个字典中还可以添加其它的截图上的元素,添加的越多伪装的就越像!
大佬们勿喷!还请指点!
毕竟我也刚开始学习(公司偷摸学真难!!)
自己的总结!有好的知识点还请分享一下。感谢!

umbrellall1 发表于 2021-1-6 13:48

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服务器的性能

林越洲 发表于 2021-1-6 13:37

爬虫爬的好,牢饭吃到饱:lol

He_Lei。 发表于 2021-1-6 13:56

想学习 怕误入歧途 就没敢学:lol

shimeng0624 发表于 2021-1-6 13:45

我学习了一下,没有坚持下去。

局外人 发表于 2021-1-6 13:46

楼主学习的哪个平台的课程啊

光速 发表于 2021-1-6 13:47

加油,早日做出抢购神器。

hacksz 发表于 2021-1-6 13:54

我问一下
你在哪里学的呀?
第一天就开始学爬源码的吗?
我学的是爬内容什么的

nullable 发表于 2021-1-6 13:55

中文和英文单词我全部看得懂,但是这么大个大个的字放到一起就有一种看弹幕的感觉

Aaron-x 发表于 2021-1-6 14:01

爬虫爬的好,牢饭吃到饱,加油小伙子
页: [1] 2 3 4 5 6
查看完整版本: 学爬虫的第一天 淦,废了