搜狗微信文章转PDF2018.1.29清博指数
优采云 发布时间: 2021-03-27 00:50搜狗微信文章转PDF2018.1.29清博指数
在线工具:微信文章为PDF
201 8. 1. 29
微信公众平台上有很多公共账户,包括各种文章,其中很多都很混乱。但是,在这些文章中,肯定会有一些出色的文章。
因此,如果我可以编写一个程序在我喜欢的微信公众号上获取文章,请获取文章的观看次数和喜欢次数,然后执行简单的数据分析,然后得出最终的文章列表肯定会更好文章。
此处应注意,通过编写爬虫程序在搜狗微信搜索中获取微信文章,您将无法获得两次浏览量和喜欢率的关键数据(在编程技能的入门水平上我是)。因此,我采取了另一种方法,并通过青博指数网站获得了我想要的数据。
注意:目前,我们已经找到一种方法来获取搜狗微信中文章的观看次数和喜欢次数。 201 7. 0 2. 03
实际上,关于青博指数网站的数据非常完整。您可以看到微信公众号列表,也可以每天,每周和每月看到热门帖子,但这就是我上面所说的。内容很乱。那些读过很多文章的人可能会受到一些家长级人才文章的喜欢。
当然,我也可以在网站上搜索特定的微信官方帐户,然后查看其历史记录文章。 Qingbo索引也非常详细,可以根据阅读次数,喜欢次数等进行分类文章。但是,我可能需要一个非常简单的指标来表示喜欢次数除以读数次数,因此我需要通过采集器对上述数据进行爬行以执行简单的分析。顺便说一句,您可以练习双手并感到无聊。
启动程序
以微信公众号建奇金融为例,我需要先打开其文章界面,以下是其网址:
http://www.gsdata.cn/query/article?q=jane7ducai&post_time=0&sort=-3&date=&search_field=4&page=1
然后我通过分析发现它总共有25个页面文章,即最后一页文章的网址如下,请注意,只有last参数是不同的:
http://www.gsdata.cn/query/article?q=jane7ducai&post_time=0&sort=-3&date=&search_field=4&page=25
因此您可以编写一个函数并调用25次。
BeautifulSoup在网页上获取您所需的数据
忘了说,我编写的程序语言是Python,而且采集器条目非常简单。然后,BeautifulSoup是一个网页分析插件,可以非常方便地在文章中获取HTML数据。
下一步是分析页面结构:
我用红色框框住了两篇文章文章,它们在网页上的结构代码是相同的。然后,通过查看元素,可以看到网页的相应代码,然后可以编写爬网规则。下面我直接写了一个函数:
# 获取网页中的数据
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:
# 替换标题中的英文双引号,防止插入数据库时出现错误
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('发布时间:'.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)
此功能包括使用请求先获取网页的内容,然后将其传递给BeautifulSoup来分析和提取我需要的数据,然后通过insert_content函数在数据库中获取数据库知识这次涉及到的所有代码将在下面给出,也怕以后我会忘记它。
我个人认为,事实上,BeautifulSoup的知识点只需要掌握几个常用的句子,例如find,findAll,get_text(),attrs ['src']等,我在上面的代码中就使用过
周期性地捕获它并将其写入数据库
您还记得第一个URL吗?总共需要爬网25页。这25个页面的URL实际上与最后一个参数不同,因此您可以提供一个基本URL并使用for函数直接生成它,25个URL就足够了:
# 生成需要爬取的网页链接且进行爬取
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函数传入两个参数,即基本url和所需的页数。您可以看到我在代码的最后一行中调用了此函数。
此函数还调用我编写的get_webdata函数来获取上面的页面。在这种情况下,这25页上的文章数据将立即写入数据库。
然后请注意以下小技巧:
time.sleep(round(random.random(),1))
每次我使用该程序爬网网页时,该语句都会在1s内随机生成一段时间,然后在这么短的时间内休息一下,然后继续爬网下一页,这可以防止被禁止。
获取最终数据
首先给我程序的其余代码:
#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()
在导入开始时包括一些插件,然后剩下的两个功能是与数据库操作有关的功能。
最后,通过从weixin.gsdata中选择*;在数据库中,我可以获取我已爬网的该微信官方帐户的文章数据,包括标题,发布日期,阅读量(如销量),访问url和其他信息。
分析数据
这些数据只是最原创的数据。我可以将上述数据导入Excel并执行简单的分析和处理,然后可以获得所需的文章列表。分析思路如下:
我只喜欢几个微信公众号。我可以使用该程序获取我最喜欢的微信官方帐户中的所有文章。如果需要,我可以进一步过滤出更高质量的文章。
该程序非常简单,但是一个简单的程序可以实现生活中的一些想法,这不是一件好事吗?