【Python3 爬虫】爬取博客园首页所有文章

首先,我们确定博客园首页地址为:https://www.cnblogs.com/

我们打开可以看到有各种各样的文章在首页,如下图:

image

我们以上图标记的文章为例子吧!打开网页源码,搜索Docker,搜索结果如下图:

2018-04-22_092757

从上图后红色标记部分可以看出,我们使用正则表达式即可匹配该网址,我们匹配到该网址之后,将该网址对应的内容下载到到底进行存储。

实现代码

import urllib.request
import re 
"""
爬取cnblogs首页所有的文章
"""
url = "http://www.cnblogs.com/"
headers = ("User_Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0")
opener = urllib.request.build_opener()
opener.addheaders = [headers]
urllib.request.install_opener(opener)
data = urllib.request.urlopen(url).read().decode("utf-8","ignore")
#此处的(.*?)是匹配href后所有内容,直到”结束
rule = '<h3><a class="titlelnk" href="(.*?)"'
result = re.compile(rule).findall(data)
for i in range(0,len(result)):
    file = "D:/source/"+str(i)+".html"
    urllib.request.urlretrieve(result[i],filename=file)
    print(""+str(i+1)+"次成功")

运行结果:

第1次成功
第2次成功
第3次成功
第4次成功
第5次成功
第6次成功
第7次成功
第8次成功
第9次成功
第10次成功
第11次成功
第12次成功
第13次成功
第14次成功
第15次成功
第16次成功
第17次成功
第18次成功
第19次成功
第20次成功
[Finished in 9.3s]

爬取完成后,我们可以在相应路径下看到爬取后的内容

image

猜你喜欢

转载自www.cnblogs.com/OliverQin/p/8905824.html