吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2447|回复: 9
收起左侧

[学习记录] Python自学笔记(11)-------GET类网站爬取

[复制链接]
l2430478 发表于 2021-1-23 23:21
本帖最后由 l2430478 于 2021-1-23 23:23 编辑

初窥门径之后,我才有能力给大家进行细节的教学,把复杂的文件超级简单化。


网站请求通常有两种:
一种是GET,比较常见的,举例www.sogou.com。
一种是POST,通过参数输入再次数据请求。举例:http://www.kfc.com.cn/kfccda/storelist/index.aspx


最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。 GET在浏览器回退时是无害的,而POST会再次提交请求。GET产生的URL地址可以被Bookmark,而POST不可以。 GET请求会被浏览器主动cache,而POST不会,除非手动设置。 GET请求只能进行url编码,而POST支持多种编码方式。GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。GET请求在URL中传送的参数是有长度限制的,而POST么有。 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。 GETPOST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。 GET参数通过URL传递,POST放在Reques




我们首先打开www.sogou.com,可以看到是get
QQ截图001.png


我们在搜过上输入 测试  两个字
我们发现浏览器上变成了   

https://www.sogou.com/web?query=%E6%B5%8B%E8%AF%95
&_asf=www.sogou.com&_ast=&w=01019900&p=40040100&ie=utf8&from=index-nologin&s_from=index&sut=1033&sst0=1611412914616&lkt=0%2C0%2C0&sugsuv=00F317737334E66A5FE70325504F3395&sugtime=1611412914616

我们把&及后面的字全部删除,重新按回车,发现网页依然正常。

右键,选检查,


我们尝试写入代码

[Python] 纯文本查看 复制代码

#先调用requests
import requests
#模拟headers   复制别人的就可以随便用
headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
                         'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
           }
#网址
url = 'https://www.sogou.com/web?query=%E6%B5%8B%E8%AF%95'
#来一次get请求
response = requests.get (url=url,headers= headers)



#.text∶返回的是字符串形式的响应数据
page_text =response.text

print(page_text)



QQ截图002.png

非常简单的一段代码 已经进行了输出。
下面我么进行优化,否则只会爬取 “测试 ”
input能获取到我们输入的文字  并设定成为keyword变量  而设立字典params能够传递参数


#让用户输入搜索信息
keyword = input('enter a key word:')

#把携带的请求参数动态化  写成一个字典
params = {
    'query':keyword
}


QQ截图003.png



#实际网站为:https://www.sogou.com/web?query=测试,但加入params字典后,就可以去掉后面字符,
#进行搜索,?带web后面的问号也可以
url = 'https://www.sogou.com/web'



优化后如下:
[Python] 纯文本查看 复制代码
#搜狗网页爬虫
import requests

#让用户输入搜索信息
keyword = input('enter a key word:')

#把携带的请求参数动态化  写成一个字典
params = {
    'query':keyword
}
#伪装headers
headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
                         'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
           }
#指定url
#实际网站为:[url=https://www.sogou.com/web?query=]https://www.sogou.com/web?query=[/url]测试,但加入params字典后,就可以去掉后面字符,
#进行搜索,?带web后面的问号也可以
url = 'https://www.sogou.com/web'

#2,发起请求get方法的返回值为响应对象
#params参数(字典):保存请求时url携带的参数
response = requests.get (url=url,params=params,headers= headers)
#修改相应数据的编码格式
#encoding返回的是响应数据的原始的编码格式,如果给其赋值则表示修改了响应数据的编码格式
response.encoding =  'utf-8'
#3,获取响应数据
#.text∶返回的是字符串形式的响应数据
page_text =response.text







最后,我么加上输入保存本地 你不用会打这段代码  会复制就行   fileName设定的是变量,是为了给保存的网页起个名字  keyword是收入输入搜索的字   最终会在默认文件夹下输入一个  测试.html


fileName = keyword+'.html'
with open(fileName,'w',encoding='utf-8') as fp:
    fp.write(page_text)
print(fileName,'爬取成功!')




最终代码如下:

[Python] 纯文本查看 复制代码
#搜狗网页爬虫
import requests

#让用户输入搜索信息
keyword = input('enter a key word:')

#把携带的请求参数动态化  写成一个字典
params = {
    'query':keyword
}
#伪装headers
headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
                         'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
           }
#指定url
#实际网站为:[url=https://www.sogou.com/web?query=]https://www.sogou.com/web?query=[/url]测试,但加入params字典后,就可以去掉后面字符,
#进行搜索,?带web后面的问号也可以
url = 'https://www.sogou.com/web'

#2,发起请求get方法的返回值为响应对象
#params参数(字典):保存请求时url携带的参数
response = requests.get (url=url,params=params,headers= headers)
#修改相应数据的编码格式
#encoding返回的是响应数据的原始的编码格式,如果给其赋值则表示修改了响应数据的编码格式
response.encoding =  'utf-8'
#3,获取响应数据
#.text∶返回的是字符串形式的响应数据
page_text =response.text

#4,持久化存储
fileName = keyword+'.html'
with open(fileName,'w',encoding='utf-8') as fp:
    fp.write(page_text)
print(fileName,'爬取成功!')




免费评分

参与人数 3吾爱币 +7 热心值 +3 收起 理由
growing88 + 1 + 1 我很赞同!
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
知味8848 + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

知味8848 发表于 2021-1-23 23:28
好有毅力哦,支持支持!!!
nulla2011 发表于 2021-1-23 23:31
perfeito 发表于 2021-1-23 23:43
白金米老鼠 发表于 2021-1-23 23:48
学习一下。。。。。。
rbgaoshou 发表于 2021-1-24 10:09
必须学习,谢谢 !
gaofeng_pj 发表于 2021-1-24 14:27
perfeito 发表于 2021-1-23 23:43
现在爬虫还不犯法吗

不要商业能避免99%的法律风险
perfeito 发表于 2021-1-24 14:54
gaofeng_pj 发表于 2021-1-24 14:27
不要商业能避免99%的法律风险

那就是自己学习使用没问题了
gaofeng_pj 发表于 2021-1-24 15:40
perfeito 发表于 2021-1-24 14:54
那就是自己学习使用没问题了

逆向开发也是一样
深水夜藏 发表于 2021-1-24 17:30
感谢分享知识,剩下靠自己了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 07:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表