|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 非凡 于 2021-10-23 23:31 编辑
此处补充个知识点:
1、访问浏览器是通过:请求(向浏览器发送请求包)——响应(得到浏览器响应的方式来获取网站资源的)。
2、客户端和网站服务器之间进行 请求——响应,最常用的两种方式是GET:从服务器请求获得数据,POST:向指定服务器提交被处理数据
3、静态网页中,get请求常在url中表现。动态网页中:post请求,在urllib库中是通过 urlopen() data 参数赋值,提出请求。
4、urlopen() data 参数默认值是None,此时以GET方式发送请求;当用户给出data参数的时候,改为POST方式发送请求。
之前程序“猫片”,现在的“百度”,都是get请求。
- from urllib import request
- from urllib import parse
- def get_url(word):
- #在向网页发送get请求时,会发现url会跟随你请求而变化,这变化时有规律的。url的变化部分一般是在接在s?后头
- #关于url变化后续爬虫中经常需要用的,比如页码的变化、二级、三级链接的变化。
- #仔细观察百度在搜索时的url,搜索的内容会在wd=后,
- url = 'http://www.baidu.com/s?wd='
- #将要搜索内容接入到url中,形成新的url
- params = parse.quote(word)
- full_url = url + params
- return full_url
- def request_url(url,filename):
- headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36 Edg/93.0.961.52'}
- # 1、包装ua信息
- req = request.Request(url=url,headers=headers)
- # 2、构建get请求对象
- res = request.urlopen(req)
- # 3、解析浏览器响应内容
- html = res.read().decode('utf-8')
- # 4、保存爬取的网页源码
- filename = word + '.html'
- with open(filename,'w',encoding='utf-8') as f:
- f.write(html)
- if __name__=='__main__':
- word = input('请求输入搜索内容:')
- url =get_url(word)
- filename = word + '.html'
- request_url(url,filename)
复制代码 |
|