python网络爬虫第三方库_python爬虫实战:urllib库入门

519b5619c1f4b7f210c4969994e647ea.png

最近三月份沉迷于股票操作,基友打球又催的慌

4aeffe0e0a7a296bb70ae1f5c399cc59.png

结果!!!!

股票下海干活,KPI低成蛇皮,打铁打成科比。然后正好最近也被安排去做数据源有关的工作(就是爬虫),那就还是服从命令,好好搬砖吧,正好日常更一下学习博客。

先总结了一下:

scrapy,newspaper一类的框架和库肯定是要了解的;

urllib库,多线程等也是必备的;

爬虫类型:

  • 通用网络爬虫(全网爬虫,性能要求高)
  • 聚焦网络爬虫(特定信息,特定人群服务)
  • 增量式爬虫 (爬取更新的页面,新的信息)
  • 深层网络爬虫(简而言之,提交表单的深层页面 构成:url列表,LVS列表,爬行控制器等)也是一些纲领性的内容,一定要有个底。

88ffc7cc436a704f7fd2798129d1fecd.png

那就开个坑,从urllib库开始和大家一起学习!

e7343fc512747f6a14b99d68bfef5e91.png

1.快速使用urllib库爬取网页

urllib是python提供操作URL的模块,我们在爬取网页的时候,经常需要用到这个库。

-先导入urllib.request

import urllib.request

-创建变量file,将爬取的网页赋给变量file(别问,问就是上虎扑步行街)

file = urllib.request.urlopen("https://bbs.hupu.com/bxj")

-用file.read()读取全部内容,file.readline()读取一行内容,储存到变量data中

data = file.read()

dataline = file.readline()

重点:

  1. file.read()读取全部内容=》赋值到字符串变量
  2. file.readlines()读取全部内容=》赋值到列表变量,若要读取全部内容,推荐使用这种方式
  3. file.readline()读取文件一行内容

print(data),print(dataline)自己查看就好囖

(篇幅有限,输出的结果如下,都是一些类似于html标签节点)

f3562131230cf512795be974a5b331c0.png

2.将爬取网页的内容储存到本地

-以写入的方式打开一个本地文件,命名为html为后缀的格式

使用open()函数打开文件,并且以“wb”二进制写data

fhandle = open("D:/repfile/1.html","wb")

-将data变量写入该文件

fhandle.write(data)

-关闭该文件

fhandle.close()

保存结果如下,可以看到有1html网页文件:

a3e9d83f180f5ec76882293c792c1543.png

另一种保存方法,即使用urlretrieve()函数将对应信息写入本地文件:

例:将知乎首页的html文件写入到本地(上图2)

filename = urllib.request.urlretrieve("https://www.zhihu.com/",filename="D:/repfile/2.html")

3.urllib中常用函数汇总:

-清除urlretrieve执行过程中的缓存

urllib.request.urlcleanup()

-返回当前环境有关信息:

file.info()

7bce838e474281fe8388f4a66a9dd8e7.png

-获取状态码和源网页

file.getcode()
file.geturl()

f119d24a76af4a648959e2c62bda0db3.png

ok,返回200响应正确;源网址为虎扑步行街,也没有问题。

-对url地址进行编码,解码

(因为url标准中只允许一部分ASCⅡ的存在,如汉字以及“:”,“&”等字符就是不符合标准的,所以需要编码)

编码:

urllib.request.quote("https://bbs.hupu.com/bxj"

ac7d205fb85c777c3e60e3fb3149692d.png

同理,可以进行解码,返回原网址

urllib.request.unquote("https%3A//bbs.hupu.com/bxj")

ea303f88a921765577cb03385630b9e0.png

今天就到这里啦,明天聊一聊url出现异常时如何处理的问题

37fbb21a52109daf1e760d727812e4a7.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值