![519b5619c1f4b7f210c4969994e647ea.png](https://i-blog.csdnimg.cn/blog_migrate/37f19c4f7c859598295af42e72950a1b.jpeg)
最近三月份沉迷于股票操作,基友打球又催的慌
![4aeffe0e0a7a296bb70ae1f5c399cc59.png](https://i-blog.csdnimg.cn/blog_migrate/797420c231d4e8ecac78ca15d79f2e6d.jpeg)
结果!!!!
股票下海干活,KPI低成蛇皮,打铁打成科比。然后正好最近也被安排去做数据源有关的工作(就是爬虫),那就还是服从命令,好好搬砖吧,正好日常更一下学习博客。
先总结了一下:
scrapy,newspaper一类的框架和库肯定是要了解的;
urllib库,多线程等也是必备的;
爬虫类型:
- 通用网络爬虫(全网爬虫,性能要求高)
- 聚焦网络爬虫(特定信息,特定人群服务)
- 增量式爬虫 (爬取更新的页面,新的信息)
- 深层网络爬虫(简而言之,提交表单的深层页面 构成:url列表,LVS列表,爬行控制器等)也是一些纲领性的内容,一定要有个底。
![88ffc7cc436a704f7fd2798129d1fecd.png](https://i-blog.csdnimg.cn/blog_migrate/c38e76e0a4403776bf77b85d7dac6eab.png)
那就开个坑,从urllib库开始和大家一起学习!
![e7343fc512747f6a14b99d68bfef5e91.png](https://i-blog.csdnimg.cn/blog_migrate/975e39e8c59d257603701e40038607c8.jpeg)
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()
重点:
- file.read()读取全部内容=》赋值到字符串变量
- file.readlines()读取全部内容=》赋值到列表变量,若要读取全部内容,推荐使用这种方式
- file.readline()读取文件一行内容
print(data),print(dataline)自己查看就好囖
(篇幅有限,输出的结果如下,都是一些类似于html标签节点)
![f3562131230cf512795be974a5b331c0.png](https://i-blog.csdnimg.cn/blog_migrate/5adcdb19cf7009ecec531338db99aff1.jpeg)
2.将爬取网页的内容储存到本地
-以写入的方式打开一个本地文件,命名为html为后缀的格式
使用open()函数打开文件,并且以“wb”二进制写data
fhandle = open("D:/repfile/1.html","wb")
-将data变量写入该文件
fhandle.write(data)
-关闭该文件
fhandle.close()
保存结果如下,可以看到有1html网页文件:
![a3e9d83f180f5ec76882293c792c1543.png](https://i-blog.csdnimg.cn/blog_migrate/bd0d4e21034d990d160765875b6804c6.jpeg)
另一种保存方法,即使用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](https://i-blog.csdnimg.cn/blog_migrate/63feb62efc44c22a42740de2608f36dd.jpeg)
-获取状态码和源网页
file.getcode()
file.geturl()
![f119d24a76af4a648959e2c62bda0db3.png](https://i-blog.csdnimg.cn/blog_migrate/4fc00698c2a5c3ba03a6276d0641bd24.jpeg)
ok,返回200响应正确;源网址为虎扑步行街,也没有问题。
-对url地址进行编码,解码
(因为url标准中只允许一部分ASCⅡ的存在,如汉字以及“:”,“&”等字符就是不符合标准的,所以需要编码)
编码:
urllib.request.quote("https://bbs.hupu.com/bxj"
![ac7d205fb85c777c3e60e3fb3149692d.png](https://i-blog.csdnimg.cn/blog_migrate/050fc281bac827a2569e211afc1531d2.jpeg)
同理,可以进行解码,返回原网址
urllib.request.unquote("https%3A//bbs.hupu.com/bxj")
![ea303f88a921765577cb03385630b9e0.png](https://i-blog.csdnimg.cn/blog_migrate/a1b6dc4adf778a92b1f0d1f9ff5b6e12.jpeg)
今天就到这里啦,明天聊一聊url出现异常时如何处理的问题
![37fbb21a52109daf1e760d727812e4a7.png](https://i-blog.csdnimg.cn/blog_migrate/10d3f9ac34c8740f8a9ae06d5c399a4d.png)