python-爬虫-urllib

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

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

常见的工作流程如下:

1.定义采集的目标(网站、APP、公众号、小程序),发送网络请求获取数据

2.当向目标发起请求,遇到对方服务器无响应或提示其他错误时,进行发起指定次数的重新请求

3.对获取到的数据进行重新处理,提取出需要的信息

4.将提取到的数据进行保存,可保存在文件、数据库中

5.继续循环进行下一轮任务的执行,直到所有爬取任务执行完毕

urllib网络请求库

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

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

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

python 复制代码
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()转换为字节流·

python 复制代码
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()

python 复制代码
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/版本号,百度会识别出来是程序在访问,会对其进行拦截

相关推荐
思则变1 小时前
[Pytest] [Part 2]增加 log功能
开发语言·python·pytest
漫谈网络1 小时前
WebSocket 在前后端的完整使用流程
javascript·python·websocket
try2find3 小时前
安装llama-cpp-python踩坑记
开发语言·python·llama
泡泡以安4 小时前
安卓高版本HTTPS抓包:终极解决方案
爬虫·https·安卓逆向·安卓抓包
博观而约取4 小时前
Django ORM 1. 创建模型(Model)
数据库·python·django
精灵vector5 小时前
构建专家级SQL Agent交互
python·aigc·ai编程
q567315235 小时前
Java Selenium反爬虫技术方案
java·爬虫·selenium
Zonda要好好学习5 小时前
Python入门Day2
开发语言·python
Vertira5 小时前
pdf 合并 python实现(已解决)
前端·python·pdf
太凉5 小时前
Python之 sorted() 函数的基本语法
python