Python爬虫——总结小知识点

urllib入门

mport urllib.request
#向指定的url地址发送请求,并返回服务器响应的类文件对象
response = urllib.request.urlopen("http://www.baidu.com/")
#服务器返回的类文件对象支持python文件对象的操作方法
#read()方法就是读取文件里面的全部内容,返回字符串
#此方法的缺点是不能构造,headers不能添加

#所以如下
headers = {
     "User-Agent":"Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11"}

requests = urllib.request.Request("http://www.baidu.com/",headers=headers)
response = urllib.request.urlopen(requests)
print(response.read())

#response响应文件除了支持文件操作方法外还支持一下方法

#4服务器页面没找到 5服务器本身有问题
print(response.getcode())
#防止重定向 ,返回实际数据的url
print(response.geturl())
#返回服务器响应的http报头
print(response.getinfo())

下一个user-agent列表

import urllib.request
import random
def load_baidu():
    url="http://www.baidu.com"
    user_agent_list=[

        "Mozilla / 5.0(Windows;U;WindowsNT6.1;en - us) AppleWebKit / 534.50(KHTML, likeGecko) Version / 5.1Safari / 534.50",
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36",
        "Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11"

    ]
    #每次请求的地址都是不一样的
    random_user_agent = random.choice(user_agent_list)
    request = urllib.request.Request(url)
    #增加对应的响应头
    request.add_header("User-Agent",random_user_agent)
    #请求数据
    #response = urllib.request.urlopen(request)
    print(request.headers)


load_baidu()

解决urlencode中的字典问题

import urllib.request
import string
import urllib.parse
def get_params():
    url="https://www.baidu.com/s?"
    params={
        "wd":"中文",
        "key":"zhang",
        "value":"san"
}
str_params = urllib.parse.urlencode((params))
#wd=%E4%B8%AD%E6%96%87&key=zhang&value=san上面这个函数的作用
print(str_params)
 final_url=url+str_params
    #将带有中文的url,转义成计算机可识别的url
    end_url = urllib.parse.quote(final_url,safe=string.printable)
    response = urllib.request.urlopen(end_url)
    data = response.read().decode("utf-8")
    print(data)
get_params()
————————————————
版权声明:本文为CSDN博主「(๑• . •๑)框」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45051787/article/details/104289241
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章