Python 爬取CSDN部落格文章

2021-09-22 21:23:16 字數 2915 閱讀 2452

新建乙個module,用於根據使用者名稱來獲取文章的url

#coding=utf-8

from bs4 import beautifulsoup

import requests

#獲取部落格文章數量

def get_page_size(user_name):

article_list_url = ''+user_name

req = requests.get(url = article_list_url)

article_list_html = req.text

bf = beautifulsoup(article_list_html)

page_list = bf.find('span', class_ = 'count')

page_size = int(page_list.text)

if page_size%20 > 0:

page_size = (page_size//20+1)

else:

page_size = page_size//20+0

return page_size

#獲取部落格文章的url

def get_article_list(user_name):

article_list_page = get_page_size(user_name)

article_list = {}

page_num = 1

while page_num <= article_list_page:

article_list_url = ''+user_name + '/article/list/' + str(page_num)

page_num+=1

req = requests.get(url = article_list_url)

article_list_html = req.text

bf = beautifulsoup(article_list_html)

article_list_texts = bf.find('div', class_ = 'article-list').find_all('h4')

#獲取部落格的位址

for article_url in article_list_texts:

name = article_url.find('a').text.replace(' ','').replace('\n','').replace('原','').replace('轉','')

url = article_url.find('a').get("href")

article_list[name] = url

return article_list

if __name__ == "__main__":

print(get_article_list('henry_lin_wind'))

根據上述步驟獲取的文章url,獲取文章內容,並儲存在本地

#coding=utf-8

from bs4 import beautifulsoup

import requests

import re

import src.article_list as al

if __name__ == "__main__":

url_list = al.get_article_list('henry_lin_wind')

for article_name in url_list.keys():

url = url_list[article_name]

print(article_name)

print(url)

req = requests.get(url)

html = req.text

bf = beautifulsoup(html)

texts = bf.find_all('div', class_ = 'htmledit_views')

#判斷文章是否存在

if texts.__len__() !=0:

#擷取文章url中的文章id,生成檔名,檔案型別為。txt

filename =re.search(r'details/[0-9]+',url).group().replace('details/','')+'.txt'

print(filename)

with open(filename, 'a', encoding='utf-8') as f:

f.writelines(article_name)

f.write('\n\n')

#迴圈列印文章的每一行內容

for content in texts[0].contents:

#判斷該行的內容是否存在

if content != '\n' and content != ' ':

text = content.find('img')

#判斷該行是否是img,如果是則查詢並列印鏈結。否則直接列印文字內容。

if text != none :

print("image--> " + text['src'])

f.writelines("image--> " + text['src'])

f.write('\n\n')

else:

print(content.text)

f.writelines(content.text)

f.write('\n\n')

print('--------------------')

else:

print("該頁面不存在")

print('--------------------')

WebCollector爬取CSDN部落格

新聞 部落格爬取是資料採集中常見的需求,也是最容易實現的需求。一些開發者利用httpclient和jsoup等工具也可以實現這個需求,但大多數實現的是乙個單執行緒爬蟲,並且在url去重和斷點爬取這些功能上控制地不好,爬蟲框架可以很好地解決這些問題,開源爬蟲框架往往都自帶穩定的執行緒池 url去重機制...

CSDN文章爬取

title csdn文章爬取 date 2019 06 09 13 17 26 tags 找到文章列表,進行文章爬取,提取到文章的url資訊。進行文章內容的解析,提取文章內容。儲存到本地。嘗試對文章樣式進行儲存 採用python語言來完成,使用pyquery庫進行爬取。article doc blo...

p29csdn博文爬蟲爬取

csdn博文爬蟲爬取 第一步關鍵是如何確定能夠唯一的找到那個文章 先爬取整個所有博文的位址,然後在爬去 取改位址的內容 import urllib.request import re url 需要瀏覽器偽裝 opener urllib.request.build opener 建立opener物件先...