搜狗微信文章轉PDF2018.1.29清博指數
優(yōu)采云 發(fā)布時(shí)間: 2021-03-27 00:50搜狗微信文章轉PDF2018.1.29清博指數
在線(xiàn)工具:微信文章為PDF
201 8. 1. 29
微信公眾平臺上有很多公共賬戶(hù),包括各種文章,其中很多都很混亂。但是,在這些文章中,肯定會(huì )有一些出色的文章。
因此,如果我可以編寫(xiě)一個(gè)程序在我喜歡的微信公眾號上獲取文章,請獲取文章的觀(guān)看次數和喜歡次數,然后執行簡(jiǎn)單的數據分析,然后得出最終的文章列表肯定會(huì )更好文章。
此處應注意,通過(guò)編寫(xiě)爬蟲(chóng)程序在搜狗微信搜索中獲取微信文章,您將無(wú)法獲得兩次瀏覽量和喜歡率的關(guān)鍵數據(在編程技能的入門(mén)水平上我是)。因此,我采取了另一種方法,并通過(guò)青博指數網(wǎng)站獲得了我想要的數據。
注意:目前,我們已經(jīng)找到一種方法來(lái)獲取搜狗微信中文章的觀(guān)看次數和喜歡次數。 201 7. 0 2. 03
實(shí)際上,關(guān)于青博指數網(wǎng)站的數據非常完整。您可以看到微信公眾號列表,也可以每天,每周和每月看到熱門(mén)帖子,但這就是我上面所說(shuō)的。內容很亂。那些讀過(guò)很多文章的人可能會(huì )受到一些家長(cháng)級人才文章的喜歡。
當然,我也可以在網(wǎng)站上搜索特定的微信官方帳戶(hù),然后查看其歷史記錄文章。 Qingbo索引也非常詳細,可以根據閱讀次數,喜歡次數等進(jìn)行分類(lèi)文章。但是,我可能需要一個(gè)非常簡(jiǎn)單的指標來(lái)表示喜歡次數除以讀數次數,因此我需要通過(guò)采集器對上述數據進(jìn)行爬行以執行簡(jiǎn)單的分析。順便說(shuō)一句,您可以練習雙手并感到無(wú)聊。
啟動(dòng)程序
以微信公眾號建奇金融為例,我需要先打開(kāi)其文章界面,以下是其網(wǎng)址:
http://www.gsdata.cn/query/article?q=jane7ducai&post_time=0&sort=-3&date=&search_field=4&page=1
然后我通過(guò)分析發(fā)現它總共有25個(gè)頁(yè)面文章,即最后一頁(yè)文章的網(wǎng)址如下,請注意,只有last參數是不同的:
http://www.gsdata.cn/query/article?q=jane7ducai&post_time=0&sort=-3&date=&search_field=4&page=25
因此您可以編寫(xiě)一個(gè)函數并調用25次。
BeautifulSoup在網(wǎng)頁(yè)上獲取您所需的數據
忘了說(shuō),我編寫(xiě)的程序語(yǔ)言是Python,而且采集器條目非常簡(jiǎn)單。然后,BeautifulSoup是一個(gè)網(wǎng)頁(yè)分析插件,可以非常方便地在文章中獲取HTML數據。
下一步是分析頁(yè)面結構:
我用紅色框框住了兩篇文章文章,它們在網(wǎng)頁(yè)上的結構代碼是相同的。然后,通過(guò)查看元素,可以看到網(wǎng)頁(yè)的相應代碼,然后可以編寫(xiě)爬網(wǎng)規則。下面我直接寫(xiě)了一個(gè)函數:
# 獲取網(wǎng)頁(yè)中的數據
def get_webdata(url):
headers = {
'user-agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36'
}
r = requests.get(url,headers=headers)
c = r.content
b = BeautifulSoup(c)
data_list = b.find('ul',{'class':'article-ul'})
data_li = data_list.findAll('li')
for i in data_li:
# 替換標題中的英文雙引號,防止插入數據庫時(shí)出現錯誤
title = i.find('h4').find('a').get_text().replace('"','\'\'')
link = i.find('h4').find('a').attrs['href']
source = i.find('span',{'class':'blue'}).get_text()
time = i.find('span',{'class':'blue'}).parent.next_sibling.next_sibling.get_text().replace('發(fā)布時(shí)間:'.decode('utf-8'),'')
readnum = int(i.find('i',{'class':'fa-book'}).next_sibling)
praisenum = int(i.find('i',{'class':'fa-thumbs-o-up'}).next_sibling)
insert_content(title,readnum,praisenum,time,link,source)
此功能包括使用請求先獲取網(wǎng)頁(yè)的內容,然后將其傳遞給BeautifulSoup來(lái)分析和提取我需要的數據,然后通過(guò)insert_content函數在數據庫中獲取數據庫知識這次涉及到的所有代碼將在下面給出,也怕以后我會(huì )忘記它。
我個(gè)人認為,事實(shí)上,BeautifulSoup的知識點(diǎn)只需要掌握幾個(gè)常用的句子,例如find,findAll,get_text(),attrs ['src']等,我在上面的代碼中就使用過(guò)
周期性地捕獲它并將其寫(xiě)入數據庫
您還記得第一個(gè)URL嗎?總共需要爬網(wǎng)25頁(yè)。這25個(gè)頁(yè)面的URL實(shí)際上與最后一個(gè)參數不同,因此您可以提供一個(gè)基本URL并使用for函數直接生成它,25個(gè)URL就足夠了:
# 生成需要爬取的網(wǎng)頁(yè)鏈接且進(jìn)行爬取
def get_urls_webdatas(basic_url,range_num):
for i in range(1,range_num+1):
url = basic_url + str(i)
print url
print ''
get_webdata(url)
time.sleep(round(random.random(),1))
basic_url = 'http://www.gsdata.cn/query/article?q=jane7ducai&post_time=0&sort=-3&date=&search_field=4&page='
get_urls_webdatas(basic_url,25)
與上面的代碼一樣,get_urls_webdataas函數傳入兩個(gè)參數,即基本url和所需的頁(yè)數。您可以看到我在代碼的最后一行中調用了此函數。
此函數還調用我編寫(xiě)的get_webdata函數來(lái)獲取上面的頁(yè)面。在這種情況下,這25頁(yè)上的文章數據將立即寫(xiě)入數據庫。
然后請注意以下小技巧:
time.sleep(round(random.random(),1))
每次我使用該程序爬網(wǎng)網(wǎng)頁(yè)時(shí),該語(yǔ)句都會(huì )在1s內隨機生成一段時(shí)間,然后在這么短的時(shí)間內休息一下,然后繼續爬網(wǎng)下一頁(yè),這可以防止被禁止。
獲取最終數據
首先給我程序的其余代碼:
#coding:utf-8
import requests,MySQLdb,random,time
from bs4 import BeautifulSoup
def get_conn():
conn = MySQLdb.connect('localhost','root','0000','weixin',charset='utf8')
return conn
def insert_content(title,readnum,praisenum,time,link,source):
conn = get_conn()
cur = conn.cursor()
print title,readnum
sql = 'insert into weixin.gsdata(title,readnum,praisenum,time,link,source) values ("%s","%s","%s","%s","%s","%s")' % (title,readnum,praisenum,time,link,source)
cur.execute(sql)
conn.commit()
cur.close()
conn.close()
在導入開(kāi)始時(shí)包括一些插件,然后剩下的兩個(gè)功能是與數據庫操作有關(guān)的功能。
最后,通過(guò)從weixin.gsdata中選擇*;在數據庫中,我可以獲取我已爬網(wǎng)的該微信官方帳戶(hù)的文章數據,包括標題,發(fā)布日期,閱讀量(如銷(xiāo)量),訪(fǎng)問(wèn)url和其他信息。
分析數據
這些數據只是最原創(chuàng )的數據。我可以將上述數據導入Excel并執行簡(jiǎn)單的分析和處理,然后可以獲得所需的文章列表。分析思路如下:
我只喜歡幾個(gè)微信公眾號。我可以使用該程序獲取我最喜歡的微信官方帳戶(hù)中的所有文章。如果需要,我可以進(jìn)一步過(guò)濾出更高質(zhì)量的文章。
該程序非常簡(jiǎn)單,但是一個(gè)簡(jiǎn)單的程序可以實(shí)現生活中的一些想法,這不是一件好事嗎?