爬虫网络请求模块urllib
程序员文章站
2022-05-03 19:58:38
...
基本概念
- 客户端向服务器发起请求的两种方式
- get 查询参数会在url显示出来,把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。传送的数据量较小,不能大于2KB,安全性非常低
- post 查询参数是不会显示在url地址之上的。通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。传送的数据量较大,一般被默认为不受限制,安全性较高。
- 如果没有加密,两种方式安全级别都是一样的,监听器都可以把所有的数据监听到。
- url:统一资源定位符( uniform resource locator)
https://new.qq.com/omn/TWF20200/TWF2020032502924000.html
https: 协议
new.qq.com : 主机名(域名) 省略了端口 443
omn/TWF20200/TWF2020032502924000.html 访问资源的路径
anchor : 锚点 前端用来做页面定位或者导航 - User-Aagent :用户代理 记录了用户的操作系统、浏览器等,为了让用户更好的获取Html页面效果。很多网站都会根据User-Aagent做反爬处理,一般爬虫都需要添加User-Aagent。
例如:User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
User-Agent通常格式:Mozilla/5.0 (平台) 引擎版本 浏览器版本号
win10对应的就是Windows NT 10.0 - Referer :表明当前的这个请求是从哪个url链接过来的。常常被用来统计用户来源,一般也可以作为一个反爬的方式。比如www.hao123.com
爬虫网络请求模块urllib
- 使用原因
- 一些老的爬虫项目用的是urllib
- 有时爬取数据需要 urllib + requests
- python内置库
- urllib在某些方面比较强大
用urllib下载图片:
from urllib import request
url = 'https://dss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=3942751454,1089199356&fm=26&gp=0.jpg'
request.urlretrieve(url, 'code2.png')
爬取百度首页的时候,如果不加上User-Agent,不能拿到真正的首页信息
import urllib.request
url = 'https://www.baidu.com/'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/87.0.4280.88 Safari/537.36 '
}
# 1.创建请求的对象(构建user-agent)
req = urllib.request.Request(url, headers=headers)
# 2.获取响应对象(urlopen)
res = urllib.request.urlopen(req)
# 3.读取响应对象的内容read().decode('utf-8')
html = res.read().decode('utf-8')
print(html)
print(res.getcode()) # 获取状态码
print(res.geturl()) # url
url中的汉字转化为16进制
import urllib.parse
import urllib.request
base_url = 'https://www.baidu.com/s?'
key = input('请输入您要搜索的内容:')
wd = {'wd':key}
# urlencode() 传递一个字典,进行中文处理
key = urllib.parse.urlencode(wd)
url = base_url + key
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
}
req = urllib.request.Request(url,headers=headers)
res = urllib.request.urlopen(req)
html = res.read().decode('utf-8')
# 保存文件
with open('搜索.html','w',encoding='utf-8') as f:
f.write(html)
上一篇: php 中英文语言转换类_PHP教程
下一篇: hdu_2682_prime
推荐阅读
-
Python网络编程中urllib2模块的用法总结
-
实例讲解Python中SocketServer模块处理网络请求的用法
-
实例讲解Python中SocketServer模块处理网络请求的用法
-
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
-
python网页请求urllib2模块简单封装代码
-
使用Python的urllib和urllib2模块制作爬虫的实例教程
-
Python中urllib+urllib2+cookielib模块编写爬虫实战
-
Python中使用urllib2模块编写爬虫的简单上手示例
-
练手爬虫用urllib模块获取
-
python urllib爬虫模块使用解析