Python爬取CSDN部落格專家系列——移動開發
註明:小編親測,只要把第一部分裡面的url修改,即可抓取部落格專家裡邊所有的專家的部落格內容和標題,後續小編還會對此程式碼改進,敬請期待
文章分為兩部分:Python爬蟲爬取移動開發專家的姓名和部落格首頁地址,爬取每個專家的所有部落格存放在已該專家名字命名的txt檔案中
說明:本爬蟲主要是採用BeautifulSoup和少量的正則匹配,在第一部分抓取完畢後需要將檔案格式改為ANSI,程式碼如下:
第一部分:
第二部分:
結果如下圖:
文章分為兩部分:Python爬蟲爬取移動開發專家的姓名和部落格首頁地址,爬取每個專家的所有部落格存放在已該專家名字命名的txt檔案中
說明:本爬蟲主要是採用BeautifulSoup和少量的正則匹配,在第一部分抓取完畢後需要將檔案格式改為ANSI,程式碼如下:
第一部分:
import urllib2
from bs4 import BeautifulSoup
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
def getPage(href): #偽裝成瀏覽器登陸,獲取網頁原始碼
headers = {
'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'
}
req = urllib2.Request(
url = href ,
headers = headers
)
content = urllib2.urlopen(req).read()
return content
def getAll(): #得到所有移動開發專家的姓名和部落格首頁地址
url = 'http://blog.csdn.net/mobile/experts.html'
page=BeautifulSoup(getPage(url)) #得到移動專家首頁原始碼,並beautifulsoup化
div = page.find('div',class_='list_3',id='experts')
for li in div.find_all('li'):
fp = open('nameAndurl.txt','a')
fp.write(li.get_text() + '\t' + li.a.get('href') + '\n')
fp.close()
if __name__=="__main__":
getAll()
第二部分:
#coding:utf-8
import urllib2
from bs4 import BeautifulSoup
import os
import re
def getPage(href): #偽裝成瀏覽器登陸,獲取網頁原始碼
headers = {
'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'
}
req = urllib2.Request(
url = href ,
headers = headers
)
content = urllib2.urlopen(req).read()
return content
def getOneAllBlog():
fp=open('nameAndurl.txt','r')
while True:
line = fp.readline().strip()
if line:
name = line.split('\t')[0] #拆分讀出的一行第一個為name
href = line.split('\t')[1] #拆分讀出的一行第二個為href
getBlog(name,href)
else:
break
def getPageNum(href):
num =0
page = getPage(href)
soup = BeautifulSoup(page)
div = soup.find('div',class_='pagelist')
result = div.span.get_text().split(' ')
list_num = re.findall("[0-9]{1}",result[3])
for i in range(len(list_num)):
num = num*10 + int(list_num[i]) #計算總的頁數
return num
def getText(name,url):
page = BeautifulSoup(getPage(url))
span_list = page.find_all('span',class_='link_title')
div_list = page.find_all('div',class_='article_description')
k =0
str1 = 'none'
fp = open("%s.txt" % name,"a")
# 獲取文章內容和內容
for div in div_list:
title = span_list[k].a.get_text().strip()
text = div.get_text()
title = title.encode('utf-8') #轉換成utf-8編碼,否則後文寫不到檔案裡
text = text.encode('utf-8')
print title
k+=1
fp.write(str(title) + '\n' + str(text) + '\n')
fp.write('===========================================' + '\n')
fp.close()
def getBlog(name,href):
i =1
for i in range(1,(getPageNum(href)+1)):
url = href + '/article/list/' + str(i)
print url
getText(name,url)
i+=1
print url,'======================================OK'
if __name__=='__main__':
getOneAllBlog()
相關文章
- Python爬取CSDN部落格資料Python
- 部落格轉移回csdn了。
- 實現爬取csdn個人部落格並匯出資料
- Python——個人部落格專案開發Python
- 部落格專家
- Python3爬取CSDN個人部落格相關資料--新增GUI圖形化介面PythonGUI
- 爬取部落格園文章
- 這是一名南京985AI碩士,CSDN部落格專家AI
- Python 實用爬蟲-04-使用 BeautifulSoup 去水印下載 CSDN 部落格圖片Python爬蟲
- Python爬蟲實戰一:爬取csdn學院所有課程名、價格和課時Python爬蟲
- CSDN產品公告第4期:移動端寫部落格功能上線!
- 如何轉載CSDN部落格
- 《將部落格搬至CSDN》
- 將部落格搬至CSDN
- 批量匯出 CSDN 部落格並轉為 hexo 部落格風格Hexo
- 將部落格搬運至CSDN
- 基於.NetCore開發部落格專案 StarBlog - (22) 開發部落格文章相關介面NetCore
- django專案開發實戰——部落格Django
- 新版CSDN部落格如何新增別人的部落格連結
- 基於.NetCore開發部落格專案 StarBlog - (6) 頁面開發之部落格文章列表NetCore
- 【爬蟲】利用Python爬蟲爬取小麥苗itpub部落格的所有文章的連線地址(1)爬蟲Python
- python爬蟲--爬取鏈家租房資訊Python爬蟲
- 如何去除CSDN部落格圖片水印
- Python爬蟲實戰系列1:部落格園cnblogs熱門新聞採集Python爬蟲
- 基於.NetCore開發部落格專案 StarBlog - (4) markdown部落格批量匯入NetCore
- 01、部落格爬蟲爬蟲
- ThinkPHP5+LayUI雲易部落格系統-自動同步CSDN網站的部落格資料PHPUI網站
- 去除【CSDN論壇】【部落格】所有廣告的方法(非會員or非專家/版主 也可使用哦)
- 分享5個爬蟲專業部落格網站爬蟲網站
- 個人部落格開發系列:文章實時儲存
- CSDN部落格海報分享上線啦!
- 基於 abp vNext 和 .NET Core 開發部落格專案 - Blazor 實戰系列(八)Blazor
- 基於 abp vNext 和 .NET Core 開發部落格專案 - Blazor 實戰系列(七)Blazor
- 基於 abp vNext 和 .NET Core 開發部落格專案 - Blazor 實戰系列(三)Blazor
- 基於 abp vNext 和 .NET Core 開發部落格專案 - Blazor 實戰系列(二)Blazor
- 基於 abp vNext 和 .NET Core 開發部落格專案 - Blazor 實戰系列(九)Blazor
- 基於 abp vNext 和 .NET Core 開發部落格專案 - Blazor 實戰系列(一)Blazor
- 基於 abp vNext 和 .NET Core 開發部落格專案 - Blazor 實戰系列(五)Blazor
- 基於 abp vNext 和 .NET Core 開發部落格專案 - Blazor 實戰系列(四)Blazor