Get

urllib的request模块可以非常方便地抓取URL内容,也就是发送一个GET请求到指定的页面,然后返回HTTP的响应:

  1. from urllib import request
  2. with request.urlopen('https://api.douban.com/v2/book/2129650') as f:
  3. data = f.read()
  4. print('Status:', f.status, f.reason)
  5. for k, v in f.getheaders():
  6. print('%s: %s' % (k, v))
  7. print('Data:', data.decode('utf-8'))

Post

如果要以POST发送一个请求,只需要把参数data以bytes形式传入。

  1. from urllib import request, parse
  2. print('Login to weibo.cn...')
  3. email = input('Email: ')
  4. passwd = input('Password: ')
  5. login_data = parse.urlencode([
  6. ('username', email),
  7. ('password', passwd),
  8. ('entry', 'mweibo'),
  9. ('client_id', ''),
  10. ('savestate', '1'),
  11. ('ec', ''),
  12. ('pagerefer', 'https://passport.weibo.cn/signin/welcome?entry=mweibo&r=http%3A%2F%2Fm.weibo.cn%2F')
  13. ])
  14. req = request.Request('https://passport.weibo.cn/sso/login')
  15. req.add_header('Origin', 'https://passport.weibo.cn')
  16. req.add_header('User-Agent', 'Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25')
  17. req.add_header('Referer', 'https://passport.weibo.cn/signin/login?entry=mweibo&res=wel&wm=3349&r=http%3A%2F%2Fm.weibo.cn%2F')
  18. with request.urlopen(req, data=login_data.encode('utf-8')) as f:
  19. print('Status:', f.status, f.reason)
  20. for k, v in f.getheaders():
  21. print('%s: %s' % (k, v))
  22. print('Data:', f.read().decode('utf-8'))

Source

https://www.liaoxuefeng.com/wiki/1016959663602400/1019223241745024