1、简介
在使用Python爬虫时,需要模拟发起网络请求,主要用到的库有requests库和python内置的urllib库,一般建议使用requests,它是对urllib的再次封装。
2、代码示例
2.1 urlib 获取网页(1)
将 url 对应的网页下载到本地
# -*- coding: UTF-8 -*-
import urllib.request
def get_html(url):
# TODO(You): 请在此实现代码
return html
if __name__ == '__main__':
url = "http://www.baidu.com"
html = get_html(url)
print(html)
def get_html(url):
response = urllib.request.urlopen(url)
buff = response.read()
html = buff.decode("utf8")
return html
2.2 urlib 获取网页(2) with header
# -*- coding: UTF-8 -*-
import urllib.request
def get_html(url, headers):
req = urllib.request.Request(url)
for key in headers:
req.add_header(key, headers[key])
response = urllib.request.urlopen(req)
buff = response.read()
html = buff.decode("utf8")
return html
if __name__ == '__main__':
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36"
}
url = "http://www.baidu.com"
html = get_html(url, headers)
print(html)
2.3 urllib post请求
- 一个Post请求的例子:
# -*- coding: UTF-8 -*-
import urllib.request
import urllib.parse
def get_response(url, data):
data = bytes(urllib.parse.urlencode(data), encoding='utf8')
response = urllib.request.urlopen(
url, data
)
buff = response.read()
result = buff.decode("utf8")
return result
if __name__ == '__main__':
data = {
"key1": "value1",
"key2": "value2"
}
url = "http://httpbin.org/post"
html = get_response(url, data)
print(html)
- 另一个Post请求的例子:
import urllib.request as rq
import urllib.parse as ps
url='https://www.python.org/search/'
dictionary = { 'q': 'urllib' }
data = ps.urlencode(dictionary)
data = data.encode('utf-8')
req = rq.Request(url,data)
res = rq.urlopen(req)
print(res.read())
3、urllib3相关示例
- 安装urllib3库:
# https://pypi.org/project/urllib3/
python -m pip install urllib3
- urllib3发起GET请求
import urllib3
http = urllib3.PoolManager() # 线程池生成请求
res = http.request('GET', 'http://httpbin.org/get')
print(res.data.decode())
- urllib3发起POST请求
import urllib3
http = urllib3.PoolManager() # 线程池生成请求
res = http.request('POST', 'http://httpbin.org/post', fields={'hello': 'world'})
print(res.data.decode())
- urllib3设置headers
headers = {'X-Something': 'value'}
res = http.request('POST', 'http://httpbin.org/post', headers=headers, fields={'hello': 'world'})
4、Chrome调试
Chrome 是由 Google 开发的免费网页浏览器,对于前端开发来说(尤其是调试代码)非常方便。 在 Chrome 浏览器中可以通过如下快捷键打开开发者界面:
- (1)按下快捷键: F12
- (2)按下快捷键: Ctrl+Shift+i
- (3)右击页面,选择"检查"来开启开发者工具。
调试工具打开如下,最常用的调试功能为:
Element 标签页: 用于查看和编辑当前页面中的 HTML 和 CSS 元素。
Console 标签页:用于显示脚本中所输出的调试信息,或运行测试脚本等。
Source 标签页:用于查看和调试当前页面所加载的脚本的源文件。
Network 标签页:用于查看 HTTP 请求的详细信息,如请求头、响应头及返回内容等。
结语
如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;
╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地
//(ㄒoㄒ)//,就在评论处留言,作者继续改进;
o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;
(✿◡‿◡)
感谢各位大佬童鞋们的支持!
( ´ ▽´ )ノ ( ´ ▽´)っ!!!