非凡 发表于 2021-10-23 18:33:28

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)

hornwong 发表于 2021-10-24 16:13:52

{:5_95:}
页: [1]
查看完整版本: python爬虫——我的第二个爬虫程序——百度