爬虫:urllib模块使用和注意事项

urllib 并不是python爬虫的首选模块!!使用流程食用即可

使用流程

# 需求:爬去搜狗页面https://www.sogou.com/

import urllib.request

# 指定url
url = 'https://www.sogou.com/'

# 指定url发起请求,返回响应对象
response = urllib.request.urlopen(url=url)

# 获取数据: read出数据
data = response.read()

# 进行持久化存储
with open('./sougou.html', 'wb') as f:
    f.write(data)

转码

url不能有非ASCII编码字符数据(中文)

解决方法:urllib.parse

'''如果含有中文就必须做转码'''
word = urllib.parse.quote('中文必须这样')

url = 'https://www.sogou.com/web?query='
url += word

response = urllib.request.urlopen(url=url)

反爬

伪装UA

import urllib.request

url = 'https://www.baidu.com/'
headers = {
    # 定制请求头
    'User-Agent': '.....',
}

'''自定义请求,返回请求对象request'''
request = urllib.request.Request(url=url, headers=headers)

'''访问页面'''
response = urllib.request.urlopen(request)
data = response.read()

print(data)

报错

'''因为没有设置ssl所以,点进request源码'''

import ssl
context = ssl._create_unverified_context()

POST请求

爬取百度翻译

import urllib.request
import urllib.parse

# 指定url
url = 'https://fanyi.baidu.com/sug'

'''post请求携带的参数进行处理'''
# 1. 将post封装
data = {
    'kw': '西瓜',
}

# 2. 编码处理 返回字符串
data = urllib.parse.urlencode(data)

# 3. 将字符串转成 byte类型
data = data.encode()

# 请求  data : post的参数
response = urllib.request.urlopen(url=url, data=data)
print(response.read())

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值