1.增加本人csdn訪問量
2.當作乙個python的練手專案
3.想寫出更優質的部落格技術文章,不再為了訪問量去寫文章。
# author:ytouch
# date:2019/07/27
# this py is used for brushing pageview for csdn
# 匯入相關爬蟲庫和解析xml庫即可
import time
from pyquery import pyquery as pq
import requests
from bs4 import beautifulsoup
'''請求頭'''
headers =
'''**ip'''
proxies =
# 爬取csdn類
class scrapymycsdn:
''' class for csdn'''
def __init__(self,blogname):
'''init 類似於建構函式 param[in]:blogname:部落格名'''
csdn_url = '' #常規csdnurl
self.blogurl = csdn_url+blogname #拼接字串成需要爬取的主頁url
''' func:獲取寫了多少篇原創文章 '''
''' return:寫了多少篇原創文章'''
def getoriginalarticalnums(self):
main_response = requests.get(self.blogurl,headers=headers,proxies=proxies)
# 判斷是否成功獲取 (根據狀態碼來判斷)
if main_response.status_code == 200:
print('獲取成功')
self.main_html = main_response.text
main_doc = pq(self.main_html)
mainpage_str = main_doc.text() #頁面資訊去除標籤資訊
origin_position = mainpage_str.index('原創') #找到原創的位置
end_position = mainpage_str.index('原創',origin_position+1) #最終的位置,即原創底下是數字多少篇博文
self.blog_nums = ''
# 獲取寫的部落格數目
for num in range(3,10):
#判斷為空格 則跳出迴圈
if mainpage_str[end_position + num].isspace() == true:
break
self.blog_nums += mainpage_str[end_position + num]
cur_blog_nums = int(self.blog_nums) #獲得當前部落格文章數量
return cur_blog_nums #返回博文數量
else:
print('爬取失敗')
return 0 #返回0 說明博文數為0或者爬取失敗
''' func:分頁'''
''' param[in]:nums:博文數 '''
''' return: 需要爬取的頁數'''
def getscrapypagenums(self,nums):
self.blog_original_nums = nums
if nums == 0:
print('它沒寫文章,0頁啊!')
return 0
else:
print('現在開始計算')
cur_blog = nums/20 # 獲得精確的頁碼
cur_read_page = int(nums/20) #保留整數
# 進行比對
if cur_blog > cur_read_page:
self.blog_original_nums = cur_read_page + 1
print('你需要爬取 %d'%self.blog_original_nums + '頁')
return self.blog_original_nums #返回的數字
else:
self.blog_original_nums = cur_read_page
print('你需要爬取 %d'%self.blog_original_nums + '頁')
return self.blog_original_nums
'''func:開始爬取,實際就是刷瀏覽量hhh'''
'''param[in]:page_num:需要爬取的頁數'''
'''return:0:瀏覽量刷失敗'''
def begintoscrapy(self,page_num):
if page_num == 0:
print('連原創部落格都不寫 爬個鬼!')
return 0
else:
for nums in range(1,page_num+1):
self.cur_article_url = self.blogurl + '/article/list/%d'%nums+'?t=1&' #拼接字串
article_doc = requests.get(self.cur_article_url) #訪問該**
# 先判斷是否成功訪問
if article_doc.status_code == 200:
print('成功訪問**%s'%self.cur_article_url)
#進行解析
cur_page_html = article_doc.text
soup = beautifulsoup(cur_page_html,'html.parser')
for link in soup.find_all('p',class_="content"):
requests.get(link.find('a')['href']) #進行訪問
else:
print('訪問失敗')
print('訪問結束')
#如何呼叫該類
mycsdn = scrapymycsdn('giser_d') #初始化類 引數為部落格名
cur_write_nums = mycsdn.getoriginalarticalnums() #得到寫了多少篇文章
cur_blog_page = mycsdn.getscrapypagenums(cur_write_nums) #cur_blog_page:返回需要爬取的頁數
for i in range(1,60):
mycsdn.begintoscrapy(cur_blog_page)
time.sleep(10) # 給它休息時間 還是怕被封號的
使用方法比較簡單: 首先是初始化類 類引數是自己的部落格名
mycsdn = scrapymycsdn('giser_d') #初始化類 引數為部落格名
其餘引數不用改執行即可
python環境為3.0版本及以上需要安裝相關庫
pip install pyquery
pip install requests
pip install bs4
write by ytouch
更新說明:
8.18前更新版本,主要是修復不同ip訪問的問題
之後完善
增加訪問 訪問同篇博文功能
改進版參考這位大佬:baidu_31657889/article/details/100120435
python爬蟲實戰
python python基礎 python快速教程 python學習路線圖 python大資料學習之路 python爬蟲實戰 python pandas技巧系 量化小講堂 python機器學習入門資料梳理 學習群 大資料 python資料探勘2 323876621 r r語言知識體系 怎樣學習r ...
每日學點python之十五 爬蟲實戰
上節講了理論,這節我們練習一下。我們寫個簡單的看看,方面理解。usr bin python coding utf 8 file 爬蟲.py brief author songqiang version 1.0 date 2019 01 10 import urllib2 向指定的url位址傳送請求,...
Python爬蟲實戰(二)
實驗介紹 本實驗通過使用beautifulsoup方法對網頁進行簡單的爬取工作,並對beatifulsoup方法進行簡單的介紹。beautifulsoup開發手冊 示例網頁如下 實驗內容 從本地網頁爬取商品資訊,商品名,評分等級等相關資訊 實驗 from bs4 import beautifulso...