python爬虫之初入urllib

python爬虫之初入urllib,第1张

python爬虫之初入urllib

目录

一、urllib库

二、robots协议

三、urllib的4个模块

 3.1urlib库的几个模块

 3.2request模块

 3.3、超时设置

 3.4、一个简单的get请求 

 3.4 请求头添加

 3.5 链接解析


一、urllib库

urllib是Python的一个内置的http请求库。Python urllib | 菜鸟教程

二、robots协议

它规定了网站的哪些允许抓取,哪些是不允许抓取的。在一个网址的后添加robots.txt即可查询。

 上面以CSDN为例查看,结果都是disallow,好家伙,嘿嘿~~~

三、urllib的4个模块 3.1urlib库的几个模块

Urllib库有四个模块:request,error, parse, robotparser

  1. request :用于请求网址的模块(发请求)
  2. error:异常处理模块
  3. parse:用于修改拼接等的模块(解析RUL或目录)
  4. robotparser:用来判断哪些网站可以爬,哪些网站不可
  3.2request模块

请求我的CSDN博客:

import urllib.request  

response = urllib.request.urlopen('https://blog.csdn.net/qq_61122628?spm=1010.2135.3001.5343')  

print(response.read().decode('utf-8')) #调用 read 方法可以得到返回的网页内容,打印网页内容
 

 

 3.3、超时设置
import urllib.request
response = urllib.request.urlopen('https://github.com/',timeout=10)
print(response.status)

 time out这里可以知道请求超时,从而报错。

3.4、一个简单的get请求 
# 引入请求模块
import urllib.request
# 发起请求,设置超时为5s
response = urllib.request.urlopen('http://www.baidu.com', timeout = 5)

print(response.status)          # 状态码,判断是否成功,200

print(response.getheaders())       # 响应头 得到的一个元组组成的列表

print(response.getheader('Server'))   #得到特定的响应头

 3.4 请求头添加
from urllib import request
url='https://blog.csdn.net/qq_61122628?spm=1001.2101.3001.5343'
headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36'}

req=request.Request(url=url,headers=headers)
response=request.urlopen(req)
print(response.read().decode('utf-8'))

为什么要添加请求头,请求头的作用是模拟浏览器去爬取内容,主要是为了被反扒。

3.5 链接解析
from urllib.parse import urlparse
s=urlparse('https://www.csdn.net/?spm=1011.2124.3001.5359')#解析的网址
print(type(s),s)#打印类型和解析结果

 

 上面参数:

scheme:表示协议
netloc:域名
path:路径
params:参数
query:查询条件,一般都是get请求的url
fragment:锚点,用于直接定位页面的下拉位置,跳转到网页的指定位置

 网址的标准链接格式就是:

 scheme://netloc/path;params?query#fragment

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5578673.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存