querylist采集微信公众号文章(搜狗微信搜索中的微信文章获取文章的浏览量和点赞量)

优采云 发布时间: 2021-12-25 16:09

  querylist采集微信公众号文章(搜狗微信搜索中的微信文章获取文章的浏览量和点赞量)

  在线工具:微信文章转PDF

  微信公众平台上有很多公众号,里面有各种各样的文章,很多很乱。但是,在这些文章中,肯定会有我认为的精品文章。

  所以如果我能写一个程序来获取我喜欢的微信公众号上的文章,获取文章的浏览量和点赞数,然后进行简单的数据分析,那么最终的文章列表肯定会是成为更好的文章。

  这里需要注意的是,通过写爬虫在搜狗微信搜索中获取微信文章,是无法获取到浏览量和点赞这两个关键数据的(我是编程入门级的)。所以我采取了不同的方法,通过清博指数网站,来获取我想要的数据。

  注:目前我们已经找到了获取搜狗微信文章浏览量和点赞数的方法。2017.02.03

  事实上,清博指数网站上的数据是非常完整的。可以查看微信公众号列表,可以查看每日、每周、每月的热门帖子。但正如我上面所说,内容相当混乱。阅读量大的文章可能是一些家长级人才会喜欢的文章。

  当然,我也可以在这个网站上搜索特定的微信公众号,然后阅读它的历史文章。青博索引也很详细,文章可以按照阅读数、点赞数等排序。但是,我需要的可能是一个很简单的点赞数除以阅读数的指标,所以需要通过爬虫爬取以上数据进行简单的分析。顺便说一句,你可以练习你的手,感觉很无聊。

  启动程序

  以建起财经微信公众号为例,我需要先打开它的文章界面,下面是它的url:

  http://www.gsdata.cn/query/article?q=jane7ducai&post_time=0&sort=-3&date=&search_field=4&page=1

  然后我通过分析发现它总共有25页文章,也就是文章最后一页的url如下,注意只有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)

  这个函数包括先使用requests获取网页的内容,然后传递给BeautifulSoup分析提取我需要的数据,然后通过insert_content函数在数据库中,这次就不涉及数据库的知识了,所有的代码都会在下面给出,也算是怕以后忘记了。

  我个人认为,其实BeautifulSoup的知识点只需要掌握我在上面代码中用到的几个常用语句,比如find、findAll、get_text()、attrs['src']等等。

  循环获取并写入数据库

  你还记得第一个网址吗?总共需要爬取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内随机生成一段时间,然后休息这么一小段时间,然后继续爬下一个页面,可以防止被ban。

  获取最终数据

  先把程序的剩余代码给我:

  #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中选择*;在数据库中,我可以获取到我抓取到的这个微信公众号的文章数据,包括标题、发布日期、阅读量、点赞、访问网址等信息。

  分析数据

  这些数据只是最原创

的数据。我可以把上面的数据导入到Excel中进行简单的分析处理,然后就可以得到我需要的文章列表了。分析思路如下:

  我喜欢的微信公众号只有几个。我可以用这个程序抓取我喜欢的微信公众号上的所有文章。如果我愿意,我可以进一步筛选出更多高质量的文章。

  程序很简单,但是一个简单的程序就可以实现生活中的一些想法,是不是一件很美妙的事情。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线