python-爬虫-urllib

网络爬虫(Web Crawler),又叫网络蜘蛛、网络机器人,是一种自动化数据采集程序

数据采集 → 数据处理 → 数据存储

常见的工作流程如下:

1.定义采集的目标(网站、APP、公众号、小程序),发送网络请求获取数据
2.当向目标发起请求,遇到对方服务器无响应或提示其他错误时,进行发起指定次数的重新请求
3.对获取到的数据进行重新处理,提取出需要的信息
4.将提取到的数据进行保存,可保存在文件、数据库中
5.继续循环进行下一轮任务的执行,直到所有爬取任务执行完毕

urllib网络请求库

urllib是python内置的一个用于网络请求的库,可以实现模拟浏览器发送HTTP请求并获取请求返回结果

请求一个简单的网页并设置请求超时

urllib.request模块
urlopen()方法可以对网页发起请求并获取返回结果

在这里插入图片描述

import urllib.request

url = 'http://www.baidu.com/'
r = urllib.request.urlopen(url,timeout=3)		# 请求超过3秒未响应内容,舍弃或重新尝试访问
html = r.read()			# read()方法可以拿到真正的网页源代码
html.decode('utf-8')	# 有乱码时,可以通过decode()方法对字符串进行解码

timeout=3:请求超过3秒未响应内容,舍弃或重新尝试访问
read()方法可以拿到真正的网页源代码
有乱码时,可以通过decode()方法对字符串进行解码
在这里插入图片描述

使用data参数提交数据

data必须是字节流编码格式的内容,即bytes类型,通过bytes()函数可以进行转换

传递了data参数,请求方式POST

http://httpbin.org/

urllib.parse.urlencode()将提交的data字典数据转化为str
bytes()转换为字节流·

import urllib.parse
import urllib.request

data = bytes(urllib.parse.urlencode({'word':'22222'}),encoding='utf8')
response = urllib.request.urlopen('http://httpbin.org/post',data=data)
response.read()

b’{\n “args”: {}, \n “data”: “”, \n “files”: {}, \n “form”: {\n “word”: “22222”\n }, \n “headers”: {\n “Accept-Encoding”: “identity”, \n “Content-Length”: “10”, \n “Content-Type”: “application/x-www-form-urlencoded”, \n “Host”: “httpbin.org”, \n “User-Agent”: “Python-urllib/3.7”, \n “X-Amzn-Trace-Id”: “Root=1-64fff907-00a9118873eff0da107e28f2”\n }, \n “json”: null, \n “origin”: “117.136.56.234”, \n “url”: “http://httpbin.org/post”\n}\n’

urllib.request.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/116.0.0.0 Safari/537.36 Edg/116.0.1938.76'
}
request = urllib.request.Request(url,headers=headers)
response = urllib.request.urlopen(request)
response.read().decode('utf-8')

百度网站对请求的headers信息进行了验证,直接使用Request()请求,默认的User-Agent是Python-urllib/版本号,百度会识别出来是程序在访问,会对其进行拦截

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蔷莫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值