python网络爬虫基础知识

举报
tea_year 发表于 2024/06/18 17:26:56 2024/06/18
【摘要】 一、urllib库urllib 是 Python 标准库中用于处理 URL 和 HTTP 请求的模块。它提供了用于打开和读取 URL、处理 HTTP 请求和响应、解析 URL、处理 cookies 等功能。本文将简要介绍 urllib 的基本使用方法。导入 urllib 模块urllib 包含几个子模块,每个子模块负责不同的功能。常用的子模块包括:urllib.request: 用于打开和读...

一、urllib库

urllib 是 Python 标准库中用于处理 URL 和 HTTP 请求的模块。它提供了用于打开和读取 URL、处理 HTTP 请求和响应、解析 URL、处理 cookies 等功能。本文将简要介绍 urllib 的基本使用方法。
  1. 导入 urllib 模块

urllib 包含几个子模块,每个子模块负责不同的功能。常用的子模块包括:
  • urllib.request: 用于打开和读取 URL。
  • urllib.parse: 用于解析 URL。
  • urllib.error: 包含异常类,用于处理在请求 URL 时可能遇到的错误。
  • urllib.robotparser: 用于解析 robots.txt 文件。
import urllib.request
import urllib.parse
import urllib.error
import urllib.robotparser

2 打开和读取 URL

使用 urllib.request 模块可以轻松地打开和读取 URL
import urllib.request

url = "http://www.baidu.com"
response = urllib.request.urlopen(url)
html = response.read()
print(html.decode('utf-8'))

3.处理 HTTP 请求

urllib.request 提供了 Request 类,可以用于创建更复杂的 HTTP 请求,例如添加头信息。
import urllib.request

url = "http://www.baidu.com"
req = urllib.request.Request(url)
req.add_header('User-Agent', 'Mozilla/5.0')

response = urllib.request.urlopen(req)
html = response.read()

print(html.decode('utf-8'))


案例:使用urllib访问豆瓣官网

import urllib.request
import urllib
import  ssl
#访问豆瓣
url = "https://www.douban.com"
req = urllib.request.Request(url=url)
res = urllib.request.urlopen(req)
print(res.read().decode("utf-8"))

会报异常
in http_error_default    raise HTTPError(req.full_url, code, msg, hdrs, fp)urllib.error.HTTPError: HTTP Error 418: 


在请求头中添加User-Agent参数,告诉服务器是正常访问,而非爬虫。解决方案:


import urllib.request
import urllib
import  ssl

url = "https://www.douban.com"
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.62"
}
ssl._create_default_https_context = ssl._create_unverified_context
req = urllib.request.Request(url=url,headers=headers)
res = urllib.request.urlopen(req)
print(res.read().decode("utf-8"))
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。