Python爬虫:urllib库的基本使用

Python爬虫:urllib库的基本使用

Python爬虫

请求网址获取网页代码
  1. import urllib.request 

  2. url = "http://www.baidu.com" 

  3. response = urllib.request.urlopen(url) 

  4. data = response.read() 

  5. # print(data) 

  6. # 将文件获取的内容转换成字符串 

  7. str_data = data.decode("utf-8") 

  8. print(str_data) 

  9. # 将结果保存到文件中 

  10. with open("baidu.html", "w", encoding="utf-8") as f: 

  11. f.write(str_data) 

get带参数请求
  1. import urllib.request 

  2.  

  3. def get_method_params(wd): 

  4. url = "http://www.baidu.com/s?wd=" 

  5. # 拼接字符串 

  6. final_url = url + wd 

  7. # 发送网络请求 

  8. response = urllib.request.urlopen(final_url) 

  9. print(response.read().decode("utf-8")) 

  10.  

  11. get_method_params("美女") 

直接这么写会报错:
Python爬虫:urllib库的基本使用

原因是,网址里面包含了汉字,但是ascii码是没有汉字的,需要转义一下:

  1. import urllib.request 

  2. import urllib.parse 

  3. import string 

  4.  

  5. def get_method_params(wd): 

  6. url = "http://www.baidu.com/s?wd=" 

  7. # 拼接字符串 

  8. final_url = url + wd 

  9. # 将包含汉字的网址进行转义 

  10. encode_new_url = urllib.parse.quote(final_url, safe=string.printable) 

  11. # 发送网络请求 

  12. response = urllib.request.urlopen(encode_new_url) 

  13. print(response.read().decode("utf-8")) 

  14.  

  15. get_method_params("美女") 

使用字典拼接参数
  1. import urllib.request 

  2. import urllib.parse 

  3. import string 

  4.  

  5. def get_params(): 

  6. url = "http://www.baidu.com/s?w" 

  7.  

  8. params = { 

  9. "wd": "美女", 

  10. "key": "zhang", 

  11. "value": "san" 

  12. } 

  13.  

  14. str_params = urllib.parse.urlencode(params) 

  15. print(str_params) 

  16.  

  17. final_url = url + str_params 

  18. # 将带有中文的url转义 

  19. encode_url = urllib.parse.quote(final_url, safe=string.printable) 

  20.  

  21. response = urllib.request.urlopen(encode_url) 

  22. data = response.read().decode("utf-8") 

  23. print(data) 

  24.  

  25. get_params() 

相关推荐