Python学习之爬虫03-自动模拟HTTP请求与百度信息自动搜索

Python学习之爬虫03-自动模拟HTTP请求与百度信息自动搜索

基础概念:

网页的请求分很多中,其中最常用的是postget

  1. get 请求

    格式:网页链接中 xxx.html?字段名=值&字段名=值

    实例:爬取百度前5页的标题,搜索内容为 Python

    import urllib.request		# 导包时可以在上一个包后面加问号,再加上另一个包
    import re
    keywd="Python"
    keywd=urllib.request.quote(keywd)	# 注意转码,浏览器的网址框不接受中文字符,需要转码处理但是Python不会自动帮我们转码,所以我们这调用quote()函数来转码
    for i in range(1,6):				# 这里循环是因为要使用Python自动读取前5页的数据
        url="http://www.baidu.com/s?wd="+keywd+"&pn="+str((i-1)*10)	# 拼接成链接,格式的话需要自己提前查看,找到规律然后再拼接出来
        data=urllib.request.urlopen(url).read().decode("utf-8")		# 读取链接到的HTML文件
        pat="title:'(.*?)',"
        pat2='"title":"(.*?)",'
        rst1=re.compile(pat).findall(data)		# 使用正则来匹配标题,注意:这里有两个匹配是因为匹配时,获取标题的格式可能不同,这里有两个,所以写两种,但其实是可以综合在一起的
        rst2=re.compile(pat2).findall(data)
        for j in range(0,len(rst1)):	# 输出数据
            print(rst1[j])
        for z in range(0,len(rst2)):
            print(rst2[z])
    

    get请求的链接格式

    get请求获得源文件后正则对应的格式

    get请求练习

  2. post请求

    一般你填写的表单都是使用post提交的,因为使用post提交时是无法直接在浏览器的链接栏中看到明文的账号和密码的。

    这里测试和联系的话,我使用学习视频中的地址。

    在HTML文件中,输入栏的input标签,我们主要要注意这个标签的name属性。

    #post请求实战
    import urllib.request
    import urllib.parse 		# 表单的内容需要转码,这里用到parse这个包下的方法来转码,账号和密码在提交的时候是k-V形式
    posturl="http://....../"	# post请求链接不变
    postdata=urllib.parse.urlencode({			# 设置要提交的表单
        "name":"[email protected]",		# 注意:提交的表单都是键值对形式
        "pass":"kjsahgjkashg",
        }).encode("utf-8")
    #进行post,就需要使用urllib.request下面的Request(真实post地址,post数据)
    req=urllib.request.Request(posturl,postdata)				
    										# post请求使用Request方法
    rst=urllib.request.urlopen(req).read().decode("utf-8")
    										# 获取post请求后返回的数据
    print(rst)
    

    post请求练习

猜你喜欢

转载自blog.csdn.net/xxydzyr/article/details/86585950
今日推荐