一、最简单的爬虫(python3 爬虫小白系列文章)

运行平台: Windows

Python版本: Python3.x

IDE: Pycharm 2017.2.4


  • 看了崔老师的python3网络爬虫实战,受益匪浅,为了帮助自己更好的理解这些知识点,于是打算趁着这股热乎劲,针对爬虫实战进行一系列的教程。

阅读文章前,我会默认你已经具备一下几个要素

1.python3安装完毕

Windows:

https://www.jianshu.com/p/7a0b52075f70

Mac:

http://pythonguidecn.readthedocs.io/zh/latest/starting/install3/osx.html

linux:

https://blog.csdn.net/qq_35195390/article/details/79057597

2.具备基本python语法

廖雪峰:

https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000

菜鸟系列:

http://www.runoob.com/python3/python3-tutorial.html

3.一个能够使用的编辑器

pycharm、sublim


首先,我们来看下面这一段代码

import urllib.request #引入urllib库

response = urllib.request.urlopen("https://tieba.baidu.com/index.html")  #发出请求并且接收返回文本对象
html = response.read()   #调用read()进行读取
print(html)  #打印

打印出来的结果如下

屏幕截图.png

这就是我们获取到的文本对象,也就是我们从浏览器上看到的数据,只不过浏览器能够把他转化成我们看到的形式,我们移步到浏览器,按下F12,看到如下画面

这些便是构成网页的代码,也就是我们爬虫所需要获取到的文本
可是我们的截图似乎和他不太一样,我想你是说这样的效果,那么我们看看下面这段代码

import urllib.request #引入urllib库

response = urllib.request.urlopen("https://tieba.baidu.com/index.html")  #发出请求并且接收返回文本对象
html = response.read().decode('utf-8')   #调用read()进行读取,转换为utf-8的编码
print(html)  #打印

我们来看看效果

进行转码处理一下就可以得到我们从网页上看到的代码了,所以爬虫不难,难在对方的开发人员不想让你拿到这些代码,于是双方就进行了斗智斗勇的阶段,这些以后会提到,回到正题,那么不是每个网页都是utf-8的形式编码的,那么我们该如何获取到该编码,别急,python为什么强大,就是因为很多前辈都帮我们造好轮子,我们只需要拿过来用就行

pip install chardet

执行下面的代码

import urllib.request #引入urllib库
import chardet

response = urllib.request.urlopen("https://tieba.baidu.com/index.html")  #发出请求并且接收返回文本对象
html = response.read()   # 调用read()进行读取
chardit1 = chardet.detect(html) #获取文本编码
print(chardit1)

print(html.decode(chardit1['encoding']))

返回结果

我们下来看看ullib这个库
urllib request 模块提供了最基本的构造 HTTP 请求的方法, 利用它可以模拟浏览器的请求发起过程

urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)

  • url 我们所要请求的网址(有些网站可能会有登陆操作,所以这里不全是我们所要爬取的网址,而要经过中间的一些过程)
  • data 参数是可选的,如果要添加 data ,它要是字节流编码格式的内容,即 bytes 类型,通过 bytes() 函数可以进行转化,另外如果你传递了这个 data 参数,它的请求方式就不再是 GET 方式请求,而是 POST 。
  • timeout 参数可以设置超时时间,单位为秒,意思就是如果请求超出了设置的这个时间还没有得到响应,就会抛出异常,如果不指定,就会使用全局默认时间。它支持 HTTP 、 HTTPS 、 FTP 请求。
  • 其他参数 还有 context 参数,它必须是 ssl.SSLContext 类型,用来指定 SSL 设置。cafile 和 capath 两个参数是指定CA证书和它的路径,这个在请求 HTTPS 链接时会有用。
  • cadefault 参数现在已经弃用了,默认为 False 。
    看不懂没关系,实战是最好的学习方式,看完这篇文章,我相信你应该对爬虫有个概念,那么我们会在接下来几个章节进行一系列爬虫实战练习,在实战中成长。

参考资料

  • 48
    点赞
  • 379
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值