python爬微信公众号前10篇历史文章(2)-拼接URL&发送http请求
-
如何拼接想要的url
http://weixin.sogou.com/weixin?type=1&page=1&ie=utf8&query=大纽约吃货小分队
python中的urlencode
当url地址当中含有中文,需要把中文做一下编码转换。 如上“大纽约吃货小分队”将转换成 “%E5%A4%A7%E7%BA%BD%E7%BA%A6%E5%90%83%E8%B4%A7%E5%B0%8F%E5%88%86%E9%98%9F ”。
其实就是gbk编码。
urllib库里面有urlencode函数可以将key value这样的键值对转换成我们想要的格式。
urllib.parse.urlencode(query, doseq=False, safe='', encoding=None, errors=None, quote_via=quote_plus)
此函数输入是字典格式的键值对,输出为key=value的形式,以%间隔。
生成上述url的ptyhon代码如下:
1 import urllib.parse 2 urlencode = urllib.parse.urlencode 3 def gen_search_gzh_url(wechat_name): 4 5 query_string_dict = dict() 6 query_string_dict['type'] = 1 7 query_string_dict['page'] = 1 8 query_string_dict['ie'] = 'utf8' 9 query_string_dict['query'] = wechat_name 10 11 return 'http://weixin.sogou.com/weixin?{}'.format(urlencode(query_string_dict))
-
Requests: HTTP for Humans
Requests是python一个http库, 通过它可以发送http请求
Session(会话对象)高级用法:会话对象让你能够跨请求保持某些参数。它也会在同一个 Session 实例发出的所有请求之间保持 cookie。所以如果你向同一主机发送多个请求,底层的 TCP 连接将会被重用,从而带来显著的性能提升。
当你需要在浏览器中进行登陆操作或者需要在一段会话中操作时,使用Session.
import requests def get_response_content(url): s = requests.session() r = s.get(url) // Sends a GET request. Returns Response object. return r.text //Content of the response, in unicode. /* The Response object, which contains a server's response to an HTTP request. */
参考文档:http://docs.python-requests.org/zh_CN/latest/api.html#sessionapi