python爬虫笔记01

python网络爬虫笔记01:基础知识与简单案例 网页渲染方式、请求头与响应头说明、豆瓣、百度翻译的案例 阅读详情

《精通python网络爬虫》笔记
下面代码大部分来自此书,仅为本人笔记

urllib.request

urllib.request的使用以及将爬取内容保存html文件
代码示例:


import urllib.request

url = "http://www.baidu.com"
file = urllib.request.urlopen(url)
data = file.read()  #读取全部,赋予一个字符串变量
dataline = file.readline()  #读取一行
datalines = file.readlines() #读取全部,赋予一个列表变量

#打印data内容
print(data)

#将抓取到的内容保存到html文件(法1)
#步骤:将爬取内容赋值给变量--》以写入的方式打开本地文件,命名*.html--》让变量值写入文件--》关闭文件
fhandle = open("F:/htmls/1.html","wb")
fhandle.write(data)
fhandle.close()

#抓取内容写入文件(法2)urllib.request.urlretrieve(url,filename=本地保存路径)
filename = urllib.request.urlretrieve(url,filename = "F:/htmls/2.html")

#清除缓存
urllib.request.urlcleanup()

#返回与当前环境有关的信息
print("当前环境信息:" + str(file.info()))

#返回爬取网页状态码200表示正确
print("网页状态码:" + str(file.getcode()))

#返回网页url
print("网页url:" + str(file.geturl()))

#编码解码
#汉字和一些字符&等不符合URL标准,需要编码
print("编码解码:")
print(urllib.request.quote("http://www.sina.com.cn"))
print(urllib.request.unquote("http%3A//www.sina.com.cn"))

设置报头模拟浏览器访问

示例代码
这里写图片描述


#爬虫模拟成浏览器访问
#有些网页无法爬取出现403错误

#方法1--使用builder_opener()修改报头

#由于urlopen()不支持一些HTTP的高级功能
#header = ("User-Agent",具体信息)

#过程:报头headers--》创建urllib.request.build_operder()对象opender--》opender.addheaders = [报头]设置报头--》
#对象.open(url).read  读取网页内容

import urllib.request

url = "http://blog.youkuaiyun.com/weiwei_pig/article/details/51178226"
headers = ("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0")

opener = urllib.request.build_opener()
opener.addheaders = [headers]
data = opener.open(url).read()

fhandle = open("F:/htmls/3.html","wb")
fhandle.write(data)
fhandle.close()


#方法2:使用 add_header()添加报头

req = urllib.request.Request(url)
#注意两个参数;对象名.add_header(字段名,字段值)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0')
data2 = urllib.request.urlopen(req).read()

超时设置


#超时设置
import urllib.request

#设置timeout的值,单位-秒
file = urllib.request.urlopen("http://www.baidu.com",timeout=30)

HTTP协议请求

GET请求

  1. 构建相应的URL地址–包括GET请求的字段名和字段内容,且URL地址满足GET请求格式—->http://网址?字段名1=字段内容1&字段名2=字段内容2
  2. 以相应的URL为参数,构建Request对象
  3. 通过urlopen()打开构建的Request请求
  4. 按需求处理抓取的内容

打开百度输入 hello 点击百度一下–得到网址–https://www.baidu.com/s?wd=hello……
分析规律可通过GET请求利用爬虫自动在百度上搜索某个关键字
示例代码

import urllib.request

keywd = "hello"
url = "http://www.baidu.com/s?wd=" + keywd

req = urllib.request.Request(url)
data = urllib.request.urlopen(req).read()

fhandle = open("F:/htmls/4.html","wb")
fhandle.write(data)
fhandle.close()

示例代码

import urllib.request

url = "http://www.baidu.com/s?wd="
#如果key是中文则会出现编码问题
key = "你好"
key_code = urllib.request.quote(key)
url_all = url + key_code

req = urllib.request.Request(url_all)
data = urllib.request.urlopen(req).read()

fh = open("F:/htmls/5.html","wb")
fh.write(data)
fh.close()

POST请求

  1. 设置好URL地址
  2. 构建表单数据,并使用urllib.parse.urlencode对数据精选编码处理
  3. 创建Request对象,参数包括URL地址和要传入的数据
  4. 使用add_header()添加头信息,模拟浏览器
  5. 使用urllib.request.urlopen()打开对应的Request对象,完成信息传递
  6. 后续处理。。。

这里写图片描述
示例代码


#post请求--登录、注册等操作

import urllib.request
import urllib.parse

url = "http://www.iqianyue.com/mypost"
postdata = urllib.parse.urlencode({
    "name":"zran",
    "pass":"abcd"
}).encode('utf-8') #将数据使用urlencode编码处理后,使用encode()设置为utf-8编码

req = urllib.request.Request(url,postdata)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0')
data = urllib.request.urlopen(req).read()

fh = open("F:/htmls/6.html","wb")
fh.write(data)
fh.close()

代理服务器的使用

示例代码


#代理服务器的使用
def use_porxy(proxy_addr,url):
    import urllib.request
    proxy = urllib.request.ProxyHandler({'http':proxy_addr})
    opener = urllib.request.build_opener(proxy,urllib.request.HTTPHandler)
    urllib.request.install_opener(opener)
    data = urllib.request.urlopen(url).read().decode('utf-8')
    return data

#代理服务器地址,http://www.xicidaili.com/
proxy_addr = "118.212.137.135:31288"
data = use_porxy(proxy_addr,"http://www.baidu.com")
print(len(data))

调试log的打印

  1. 分别使用urllib.request.HTTPHander()和urllib.request.HTTPSHander()将debuglevel值设为1
  2. 使用urllib.request.build_opener()创建自定义的opener对象,并使用 1. 中设置的·值作为对象
  3. 用urllib.request.install_opener创建全局默认的opener对象,这样在使用urlopen时就会使用我们安装的opener对象
  4. 后续操作,如urlopene()等

#运行程序时打印调试log

import urllib.request

httphd = urllib.request.HTTPHandler(debuglevel=1)
httpshd = urllib.request.HTTPSHandler(debuglevel=1)
opener = urllib.request.build_opener(httphd,httpshd)
urllib.request.install_opener(opener)
data = urllib.request.urlopen("http://www.baidu.com")

异常处理URLError

未~

手把手教你解决Kernel panic报错:init找不到的5种排查方法(附NFS挂载实战) 本文深入解析了Linux系统启动时出现“Kernel panic - not syncing: No working init found”报错的根本原因,并提供了五种系统性的排查方法。文章结合NFS挂载根文件系统的实战场景,详细阐述了从动态链接库依赖、内核引导参数、NFS权限配置、文件系统完整性到内核配置干扰的完整排查路径,帮助开发者快速定位并解决这一常见的系统启动故障。 阅读详情

相关推荐

避开STM32中断优先级配置的坑:HAL_NVIC_SetPriority()参数你真的用对了吗?

本文深入解析STM32中断优先级配置中的关键问题,重点剖析HAL_NVIC_SetPriority()函数的正确使用方法。通过实际案例揭示优先级分组设置、抢占优先级与子优先级的区别,提供多中断系统中的优化策略和调试技巧,帮助开发者避免常见配置错误,提升系统稳定性。

weixin_42532938的博客 422

pythonurllib实战教学_Python——关于爬虫基础Urllib实战

今天来实际运行一下关于爬虫的一些小玩意首先,我们打开IDLE,今天我们查询一下关于优快云的标题名称。>>> import urllib>>> import urllib.request>>> data=urllib.request.urlopen("https://www.csdn.net").read().decode("utf-8","i...

weixin_29529047的博客 368

自由曲面与衍射光学元件DOE:从基础理论到工业应用的全景解析

本文全景解析了自由曲面与衍射光学元件的核心理论与工业应用。文章深入探讨了自由曲面在非对称光学设计中的灵活性及其数学描述与制造挑战,并阐述了衍射光学元件通过微纳结构进行波前相位调制的原理与多样化功能。两者与经典光学互补融合,共同构成了高端成像、智能照明、激光加工及AR/VR等前沿领域的底层技术支柱。

devops8pract的博客 391

self.headers = CaseInsensitiveDict((to_native_string(name), value) for name, value in headers.it

报错原因是self.headers为字典格式,写成了字符串格式,会报错!

weixin_44424997的博客 1166

一文带你看懂SAP-HANA的基本架构与原理

创作不易,希望大家一键三连支持!!!♥♥♥创作不易,希望大家一键三连支持!!!♥♥♥创作不易,希望大家一键三连支持!!!♥♥♥。

丷江南南的博客 5076

Ventoy引导自定义菜单配置详解:手把手教你用ventoy_grub.cfg启动硬盘里的Manjaro

本文详细解析了Ventoy引导自定义菜单配置方法,重点介绍如何通过ventoy_grub.cfg文件启动硬盘中的Manjaro系统。从Ventoy与GRUB2的协作原理到具体配置步骤,包括分区布局设计、关键参数解析及常见问题解决方案,帮助用户实现多系统引导的灵活管理。

weixin_28738165的博客 299

python3 模拟POST请求时 “Content-Type”指定编码会消失的问题

HTTP请求 服务器默认GBK编码时 浏览器UTF-8编码 如果请求时不指定编码格式就会乱码 python3 模拟POST请求时 “Content-Type”指定编码会消失的问题如下代码所示 在外部指定的”Content-Type”=”application/x-www-form-urlencoded; charset=UTF-8” 但是用抓包后返现charset=UTF-8消失了变

打怪升级 1万+

别再乱点U盘里的.exe了!手把手教你清除‘Usb Disk.exe’病毒并恢复隐藏文件

本文详细介绍了如何识别和清除U盘病毒(如Usb Disk.exe),并提供从终止病毒进程到恢复隐藏文件的完整步骤。通过禁用自动播放、清理注册表和使用命令行工具,帮助用户彻底清除病毒并预防未来感染,确保数据安全。

weixin_42530732的博客 592

Python——关于爬虫基础Urllib实战

今天来实际运行一下关于爬虫的一些小玩意 首先,我们打开IDLE,今天我们查询一下关于优快云的标题名称。 >>> import urllib //调用模块 >>> import urllib.request >>> date=urllib.request.urlopen("http://www.jd...

Xa_L 680

【eNSP 华为模拟器】单臂路由实战:从原理到配置全解析

本文详细解析了单臂路由技术,通过华为eNSP模拟器从原理到配置进行实战教学。文章阐述了单臂路由如何利用路由器单物理接口创建多个子接口,实现不同VLAN间通信,并提供了完整的操作步骤、配置命令及排错方法,帮助网络工程师掌握这一经典网络技术。

698

YOLOv8改进,YOLOv8添加DCNv4可变性卷积(windows系统成功编译),全网最详细教程

DCNv4通过两项关键增强解决了其前身DCNv3的局限性:1. 移除空间聚合中的softmax归一化,以增强其动态特性和表达能力;2. 优化内存访问以最小化冗余操作,从而加速计算。这些改进使得DCNv4相比DCNv3显著加快了收敛速度,并且处理速度大幅提升,前向传播速度超过三倍。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 6469

【Python网络爬虫笔记】week01

Requests库入门 Requests库安装 http://www.python-requests.org 安装方法,以管理员身份打开cmd,在cmd中输入如下命令: pip install requests requests库的7个主要方法 方法 说明 requests.request() 构造一个请求,支撑以下各方法的基础方法 requests.get() 获取HTML...

Brielle_Zhang的博客 320

淘宝母婴用品数据挖掘及可视化分析研究

1. 背景介绍 在当今的电子商务时代,母婴用品市场已经成为了各大电商平台的一片蓝海。淘宝作为中国最大的电子商务平台,其上的母婴用品交易数据自然引人关注。理解这些数据,可以帮助商家更好地制定营销策略,也可以帮助消费者更好地选择产品。因此,本文将对淘宝母婴用品的数据进行深入的挖掘和分析。 1.1 电子商务的

AI天才研究院 1257

【python爬虫学习笔记】01 python网络爬虫与信息提取

来自于MOOC网的北京理工大学嵩天老师的python爬虫与信息提取的课程笔记,同步学习,持续更新 python网络爬虫与信息提取 课程分为以下6个部分 requests 自动爬取html页面,自动网络请求提交 robots.txt 网络爬虫排除标准 beautiful soup 解析html页面 projects 实战项目A/B Re 正则表达式详解,提取页面关键信息 Sc...

ccszbd的博客 430

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Python网络爬虫与信息提取笔记01-Requests库入门

既然选择学习网络爬虫,我们一定要知道,Requests是一个能够自动爬取HTML页面、自动网络请求提交的优秀的第三方库,入门第一步就是安装这个第三方库,我们默认此时你已经安装好了PythonIDLE,本人学习时安装的Python环境为Python3.7.4: 第一步:管理员权限打开cmd,输入“pip install requests”,即可下载安装(我的提示已经安装过了,如果你在此之前还没有...

MARS_098的博客 830

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

学习笔记(01):《从零起步,系统掌握Python网络爬虫》-爬虫介绍

立即学习:https://edu.csdn.net/course/play/24756/280645?utm_source=blogtoedu 测试1111111111 测试1111111111测试1111111111 测试1111111111 测试1111111111 测试1111111111 测试1111111111测试1111111111 测试1111111111 测试111...

啊啊啊啊2 779

python学习笔记-爬虫01

#============================爬虫准备工作============================ # 参考资料     # python网络数据采集, 图灵工业出版     # 精通Python爬虫框架Scrapy, 人民邮电出版社     # [Python3网络爬虫](http://blog.csdn.net/c406495762/article/details/...

maopc1987的博客 388

千峰Python爬虫笔记day01

爬虫工作流程:1.将种子URL放入队列 2.从队列获取URL,模拟浏览器访问URL,抓取内容 3.解析抓取的内容,将需要进一步抓取的URL放入工作队列,存储解析后的内容。(可以用文件、MySQL、SQLite、MongoDB等存储) ps:去重:Hash表,bloom过滤器 抓取策略:深度优先、广度优先、PageRank(SEO干的事儿)、大站优先 爬虫口头协议-robots协议,如www.t...

云の博客 1733

学习笔记(01):150讲轻松搞定Python网络爬虫-爬虫介绍(资料在第一节中下载)

【课程介绍】 本课程总体分成五大模块,分别是网络请求、数据解析、数据存储、爬虫进阶、Scrapy框架和分布式爬虫,包含了一个爬虫工程师需要掌握的几乎所有技能,知识点非常体系。实战部分都是紧贴知识点,即学即用,紧跟潮流。课程还配有许多作业,通过作业可以让学生实现真正把技术转成自己的技能的目的。 【课程内容包括】 共150讲课程+...

LittleJanejane的博客 301

python scrapy爬虫笔记01

【python scrapy 爬虫】 1 环境配置     win10; python3.7; 2 爬虫project【第三方包scrapy,re】 【 scrapy 相关】 【 pip安装 】 pip install Scrapy; 【scrapy 一些相关依赖】 pywin32 pyth...

weixin_30595035的博客 113

学习笔记(01):《从零起步,系统掌握Python网络爬虫》-爬虫开发工具安装

本课是一门面向企业实际需求,专为零基础想入门并进阶中级python爬虫工程准备。 课程从最基本的网络抓包开始讲起,到网络请求,再到数据解析和数据存储,再到反反爬虫和分布式爬虫,技术要点应有尽有。   一边学习一边实操实战项目,从易到难,打好基础,层层深入。不同的实战项目锻炼不同的技能点,让你牢牢掌握爬虫工程师的核心技能。课程以...

chuckbas5lora的博客 205

Python 爬虫篇#笔记01# | 初识爬虫(爬虫原理和技术)

爬虫是一门综合性很强的学科(杂学)。PythonHTMLJavaScript正则表达式XPath数据库Redis消息队列DockerELKHadoop数据分析ETL中间人攻击自动化测试技术可视化……这其中的任何一项,在一个大公司里面都可以让很多人来做。变通——只要能够获得数据,任何技术都可以使用。所谓草木竹石皆可为剑。爬虫不应该是一个枯燥的一成不变的模式化的工作。而是一个充满了创意和挑战,能够让旁观者大呼“我X还能这样搞”的工作。

Naiva的博客 1279

学习笔记(01):150讲轻松搞定Python网络爬虫-爬虫开发工具安装

往下看:150讲课程内容花2分钟了解下~ 重点:通过爬虫进阶的知识点我们能应对大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度! 你将收获~~ 1、面向企业实际需求,为零基础从入门到进阶中级python爬虫工程打造。 2、从网络抓包开始讲起,到网...

weixin_46362895的博客 153
上一篇: 《SQL必知必会》随书学习笔记
下一篇: python爬虫笔记02
时光life
博客等级 码龄9年 24粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值