python爬虫——我的第二个爬虫程序——百度
本帖最后由 非凡 于 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) {:5_95:}
页:
[1]