小程序云开发教程二:数据的获取(爬虫)

数据从哪儿来呢?这是个很好解决的问题,我们只需要参考一下网上的爬虫代码,再自己改动一下,加上一下自己想要的东西,就可以了
我们就参考一下知乎的一篇爬取糗百的文章吧: https://zhuanlan.zhihu.com/p/37626163
直接把他的代码拿过来,然后改动一下,在代码中引入time函数(为了延迟请求,对糗百网站友好),再在存入数据库之前,加入几个我们想要展示的值。
先看一下总的数据结构:
在这里插入图片描述
前提是你已经安装好了python环境: 我的环境是python2.7

qiubai.py代码如下:

#!/usr/bin/python
#-*- coding:utf-8 -*-

import pymongo
import requests
from lxml import etree
import time
import random

ID = 0

def getPage(url):
	# 构建请求头
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36'}
    response = requests.get(url, headers = headers, timeout=10)
    time.sleep(random.randint(1, 5)) #在1-5秒随机延时请求

    if response.status_code == 200:
    	response.encoding = 'UTF-8'
    	return response.text
    else:
    	print('err')

def parsePage(html):
	global ID
	print(ID)
	html_lxml = etree.HTML(html)
	datas = html_lxml.xpath('//div[contains(@id, "qiushi_tag")]')
	item = {}

	for data in datas:
		username = data.xpath('.//h2')[0].text.strip()

		content = data.xpath('.//div[@class="content"]/span')[0].text.strip()

		comments = data.xpath('.//span[@class="stats-comments"]/a/i')[0].text

		vote = data.xpath('.//span[@class="stats-vote"]/i')[0].text

		image = data.xpath('.//div[@class="thumb"]/a/img/@src')


		item = {
			'username': username,
			'content': content,
			'vote': vote, #点赞数
			'image': image, #图片链接,不一定有
			'id': ID, #到时候翻页需要的id,其实使用微信的skip函数最好
			'shareNum': 0, #分享数
			'comment': '', #评论
			'commentNum': 0 #评论人数
			}
		ID += 1
		print(item )
		print(ID)
		insertMongoDB(item)


def insertMongoDB(item):
	client = pymongo.MongoClient(host = 'localhost', port=27017)
	db = client.qiubai
	colle = db.duanzi
	result = colle.insert(item)
	print('储存成功')


def main(num):
    # num决定爬取页面数
    for index in range(num):
    	#https://www.qiushibaike.com/8hr/page/
    	#https://www.qiushibaike.com/hot/page/ + str(index)+
	    url = 'https://www.qiushibaike.com/imgrank/page/9/'
	    html = getPage(url)
	    parsePage(html)


if __name__ == '__main__':
	#因为糗百只有13页,这里只爬1页
    main(1)

然后我们下载一个Studio 3T, 选择免费试用安装;

然后在qiubai.py文件所在文件夹下, 按住shift按右键,选择在所在文件夹下打开命令行:
输入:

python qiubai.py

等待它爬取完毕, 然后刷新studio 3T ,就会发现test的qiubai数据库里的duanzi集合已经有数据了, 导出(export collection)成json文件,备用;

在这里插入图片描述

小程序云开发教程一: 新建一个云开发项目以及基本布局
小程序云开发教程二:数据的获取(爬虫)
小程序云开发教程三: 数据的布局以及展示
小程序云开发教程四:云函数的使用与点赞功能的实现

顺手点一个赞吧

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值