python爬虫Day 04

一、爬取豌豆荚:
    1.访问游戏主页
        https://www.wandoujia.com/category/6001
    2.点击查看更多,观察network内的请求
        - 请求url
            page2:
                https://www.wandoujia.com/wdjweb/api/category/more?
                catId=6001&subCatId=0&page=2&ctoken=vbw9lj1sRQsRddx0hD-XqCNF
            page3:
                https://www.wandoujia.com/wdjweb/api/category/more?
                catId=6001&subCatId=0&page=3&ctoken=vbw9lj1sRQsRddx0hD-XqCNF
            page4:
                https://www.wandoujia.com/wdjweb/api/category/more?
                catId=6001&subCatId=0&page=4&ctoken=vbw9lj1sRQsRddx0hD-XqCNF

    3.循环拼接30个接口

    4.解析返回的数据,获取每一个app数据

''''''

'''
爬取豌豆荚app数据
- 请求url
page2:
https://www.wandoujia.com/wdjweb/api/category/more?catId=6001&subCatId=0&page=2&ctoken=vbw9lj1sRQsRddx0hD-XqCNF
'''
import requests
from bs4 import BeautifulSoup
import re
'''
爬虫三部曲
'''
# 1.发送请求
def get_page(url):
    response = requests.get(url)
    return response

# 2.解析数据
def parse_data(text):
    soup = BeautifulSoup(text, 'lxml')
    # print(soup)
    li_list = soup.find_all(name='li', class_="card")
    # print(li_list)
    for li in li_list:
        # print(li)
        # print('tank' * 100)
        app_name = li.find(name='a', class_="name").text
        # print(app_name)

        app_url = li.find(name='a', class_="name").attrs.get('href')
        # print(app_url)

        download_num = li.find(name='span', class_="install-count").text
        # print(download_num)

        app_size = li.find(name='span', attrs={"title": re.compile('\d+MB')}).text
        # print(app_size)


        app_data = f'''
        游戏名称: {app_name}
        游戏地址: {app_url}
        下载人数: {download_num}
        游戏大小: {app_size}
        \n
        '''
        print(app_data)
        with open('wandoujia.txt', 'a', encoding='utf-8') as f:
            f.write(app_data)
            f.flush()

if __name__ == '__main__':
    for line in range(1, 2):
        url = f'https://www.wandoujia.com/wdjweb/api/category/more?catId=6001&subCatId=0&page={line}&ctoken=vbw9lj1sRQsRddx0hD-XqCNF'
        print(url)
        # 1.发送请求
        # 往接口发送请求获取响应数据
        response = get_page(url)
        # print(response.text)
        # import json
        # json.loads(response.text)
        # print(type(response.json()))
        # print('tank ' * 1000)

        # 把json数据格式转换成python的字典
        data = response.json()

        # print(data['state'])

        # 通过字典取值获取到li文本
        text = data.get('data').get('content')

        # 2.解析数据
        parse_data(text)

二 、微信模块

    1.安装与使用
        pip3 install -U wxpy

微信模块的使用

from wxpy import *

# cache_path=True 保留微信缓存信息
# bot = Bot(cache_path=True)

bot = Bot(cache_path=True)

print()
# 查找好友: search('好友备注名')
dsb = bot.search('浙江万里学院胥毅')[0]

# 查找群
# group = bot.groups().search('群名称')
# 接收群消息
# @bot.register(chats=group)

# 接收指定好友消息
@bot.register(chats=dsb)
def get_msg(msg):
    # 接收所有的消息

    # 判断消息的发送者是否是胥毅
    if msg.sender == dsb:
        # True 打印胥毅发送的消息
        print(msg.text)

        return '你真的是DSB!'


# 让微信程序一直运行
embed()

微信好友比例图

from wxpy import *
# pip3 install pyecharts==0.5.8
from pyecharts import Pie
import webbrowser

# 实例化bot对象
bot = Bot()
# 获取微信所有好友对象
friends = bot.friends()

# 设置图形展示比例名称
attr = ['男朋友', '女朋友', '未知性别']

# 比例名称一一对应的值
value = [0, 0, 0]

# 循环所有好友对象
for friend in friends:
    # sex好友性别
    if friend.sex == 1:  # 等于1代表男性
        value[0] += 1
    elif friend.sex == 2:  # 等于2代表女性
        value[1] += 1
    else:
        value[2] += 1

# 实例化一个饼状图对象, 设置名称为Tank老师的好朋友们
pie = Pie("Tank老师的好朋友们")
# 通过饼状图对象add方法添加值
# is_label_show: True ,光标悬浮时展示好友比例 %比
pie.add("", attr, value, is_label_show=True)
# 生成一个性别html文件
pie.render('sex1.html')

# 自动打开sex.html文件
webbrowser.open('sex.html')
posted @ 2019-07-04 13:19  believe_dawn  阅读(194)  评论(0)    收藏  举报