某一次想把博客裏的內容打印下來,但是一篇一篇去整太慢了。。。。
當時並沒有學習python
學習了python之後來實現一下。
from urllib import request
from bs4 import BeautifulSoup
import re
# 獲取 csdn 某博客的所有文章鏈接
# author Leon
def geturl(url):
sum = 0
s = set()
k = input("請輸入打印前爬取前多少頁博客內容:")
k = int(k)
for i in range(1, k+1):
newpage =url + "/article/list/"+str(i) + '?'
str1 = url + "/article/details/"
html = request.urlopen(newpage)
bsobj = BeautifulSoup(html)
for links in bsobj.findAll("a"):
if 'href' in links.attrs:
newstr = links['href']
if re.search(r'%s[\d]*'%str1, newstr) != None:
if newstr not in s:
print(newstr)
s.add(newstr)
sum += 1
print("爬取總共的文章:%d" % sum)
geturl("https://blog.csdn.net/weixin_40894017")
代碼很簡單,這個算是爬蟲的簡單應用吧。
基本過程就是
提取每一頁的url地址。但是有許多無用的url。關鍵在於如何過濾掉這些我們不想要的。
我們發現,博文的內容url的前綴是相同的,所以可以用正則表達式篩選出來。
用set記錄一下防止重複。