爬虫流程:
①先由urllib的request打开Url得到网页html文档
②浏览器打开网页源代码分析元素节点
③通过Beautiful Soup或则正则表达式提取想要的数据
④存储数据到本地磁盘或数据库(抓取,分析,存储)
Urllib库是python中一个功能强大、用于操作URL,并在做爬虫的时候经常要用到的库。
要使用Urllib库爬取网页,首先要导入用到的对应模块。
- 第一个模块 request,它是最基本的 HTTP 请求模块,我们可以用它来模拟发送一请求,就像在浏览器里输入网址然后敲击回车一样,只需要给库方法传入 URL 还有额外的参数,就可以模拟实现这个过程了。
import urllib.request
1-在导入模块后,我们需要使用urllib.request.urlopen打开并爬取一个网页,此时可以输入如下代码爬取百度首页(http://www.baidu.com),爬取后,讲爬取到的网页赋值给变量file:
file=urllib.request.urlopen("http://baidu.com")
2-此时,我们需要将对应的网页内容读取出来,可以使用file.read()读取全部内容,或者使用file.file.readline()读取一行的内容。
data=response.read()
dataline=response.readline()
3-可以看到,我们分别读取到了爬取的网页的全部内容和一行内容,并分别赋给了变量data,dataline。
随后,我们可以用print()输出爬取的内容
print(data.decode('utf-8'))
爬虫爬取的网页代码。
读取内容的方式 |
---|
file.read()读取文件的全部内容,与readlines不同的是,read会把读取到的内容赋值给一个字符变量 |
file.readlines()读取文件的全部内容,与read不同的是,readlines会把读取到的内容赋给一个列表变量,若要读取全部内容,使用这个方式 |
file.readline()读取文件的一行内容 |
保存爬取的代码
思路:
- 首先,爬取一个网页并将爬取到的内容读取出来赋给一个变量。
- 在文件夹里面建立一个文件用以保存这个网页。
- 将1.中的变量写入该文件中。
- 关闭文件夹
方法一:
fhandle=open("D:/python教程/myweb/1.html","wb")
fhandle.write(data)
fhandle.close()
通过open()函数打开了该文件,并以"web"即二进制写入的方式打开。打开后将句柄赋给变量fhandle,然后使用writ()方法写入数据。
此时我们已经成功用程序自动地将百度首页的代码爬取到本地啦~就是没有图片。
方法二使用urlretrieve()函数爬取网页
我们可以直接用urllib.request里面的urlretrieve()函数直接将对应的信息写进本地文件。
import urllib.request
filename=urllib.request.urlretrieve("https://baike.baidu.com/item/%E4%BC%A0%E9%97%BB%E4%B8%AD%E7%9A%84%E9%99%88%E8%8A%8A%E8%8A%8A/24224281?fr=aladdin",\
filename="D:/python教程/myweb/2.html")
执行过后,我们就成功把《传闻中的陈芊芊》的百度百科数据保存到本地文件了。
一直想学一下怎么爬虫,在懒惰+没有方向一直拖。想着如果一直不行动的话,可能就一直都学不会。所以找了课本开始学习,这篇是上周就写好了,但是自己存着,感觉不发出来还是会助长自己的惰性。争取持续更新。今天也把陈芊芊看完啦哈哈哈哈