Python爬取自我成长第一弹,爬取起点中文网数据。

版权声明:本文为章鱼哥原创文章,若要转载,请注明出处 https://blog.csdn.net/qq_40388552/article/details/96857944
  自打学了python就总想去爬点儿啥,抽空写了个简单的爬虫程序,爬取了起点中文网站原创风云榜的玄幻小说排行。
这是我爬取数据的网页[起点中文网排行(https://m.qidian.com/rank/yuepiao/male?gender=male&catId=21&yearmonth=201907)
  进入到网页我们发现这是一个动态加载的网页,当我们拖动下拉的时候,会有新的数据加载出来,同时网页url地址没有发生变化,如果我们直接爬取的话,只能爬取出几十行数据,这时候有两种方式来实现爬取所有的需要我们下拉才能爬取到的数据。

  1. 使用Selenium.webdriver来模拟浏览器操作下拉框,这里我没有使用这种方式
  2. 第二种方式
    首先打开网页,F12打开开发者模式,拖动网页的下拉框,我们就会发现他动态加载数据的规律
    在这里插入图片描述
    https://m.qidian.com/majax/rank/yuepiaolist?_csrfToken=vwHSDjqNkaUOCWnWhu2mvDKXM9u9ETr58fpq3V9J&gender=male&catId=21&yearmonth=201907&pageNum=3该地址只是最后的pageNum在变化,我们可以自己传值进去,我们想要多少数据就有多少数据。

下面是完整的可执行的Python代码:

import json
import requests


url = 'https://m.qidian.com/majax/rank/yuepiaolist?_csrfToken=vwHSDjqNkaUOCWnWhu2mvDKXM9u9ETr58fpq3V9J&gender=male&catId=21&yearmonth=201907&pageNum='


def getHtmlData(url):
    responseHtml = requests.get(url)
    hjson = json.loads(responseHtml.text) #读取页面的json数据,读出来相当于一个dict字典。
    a = hjson['data']['records']
    final_data = []
    for b in a:
        bid = b['bid']
        bName = b['bName']  # 书名
        bAuth = b['bAuth']  # 作者
        desc = b['desc']  # 简介
        cat = b['cat']  # 类型
        catId = b['catId']
        cnt = b['cnt']  # 字数
        rankCnt = b['rankCnt']  # 月票数
        singele_data = [bName, bAuth, cat, cnt, rankCnt, desc]
        final_data.append(singele_data)
    #把json数据写入到excel中
    output = open('c:/users/zyu/desktop/crawlTest.xls', 'a', encoding='utf-8')  #打开该文件以追加的方式进行写入
    #output.write('书名\t作者\t类型\t字数\t月票数\t简介\n')
    for i in range(len(final_data)):
        for j in range(len(final_data[i])):
            output.write(str(final_data[i][j]))  # write函数不能写int类型的参数,所以使用str()转化
            output.write('\t')  # 相当于Tab一下,换一个单元格
        output.write('\n')  # 写完一行立马换行
    final_data.clear()
    output.close()


def appdStr(start, end):
    for i in range(start, end):
        if i == 1:
            output = open('c:/users/zyu/desktop/crawlTest.xls', 'a', encoding='utf-8')
            output.write('书名\t作者\t类型\t字数\t月票数\t简介\n')
            output.close()
            getHtmlData(url + str(1))
            #print(url + str(1))
        else:
            getHtmlData(url + str(i))
            #print(url + str(i))
            #time.sleep(2) #执行等待,防止短时间内多次访问被禁。


appdStr(1, 20)

执行完成后可以在excel中查看爬取的20页的数据,这只是一个简单的python程序,大部分网站都有自己的反爬虫程序,细心一点总能够找到方法的。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这提供一个简单的Python爬取起点中文网月票榜数据并生成可视化图的示例代码,需要使用到requests、beautifulsoup4和matplotlib库。 首先,我们需要发送HTTP请求获取月票榜页面的HTML源码,然后使用beautifulsoup4库解析HTML源码,提取有用的数据。代码如下: ```python import requests from bs4 import BeautifulSoup import matplotlib.pyplot as plt # 发送HTTP请求,获取月票榜页面的HTML源码 url = 'https://www.qidian.com/rank/yuepiao' response = requests.get(url) html = response.text # 使用beautifulsoup4库解析HTML源码,提取有用的数据 soup = BeautifulSoup(html, 'html.parser') book_list = soup.select('.book-mid-info') titles = [] month_tickets = [] for book in book_list: title = book.select_one('.title').text.strip() titles.append(title) month_ticket = int(book.select_one('.month-ticket').text.strip()) month_tickets.append(month_ticket) ``` 接下来,我们可以使用matplotlib库将月票榜数据可视化,绘制条形图或饼图等不同类型的图表。代码如下: ```python # 使用matplotlib库将月票榜数据可视化,绘制条形图 plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置中文显示 plt.bar(range(len(titles)), month_tickets) plt.xticks(range(len(titles)), titles, rotation=90) plt.title('起点中文网月票榜') plt.xlabel('小说名称') plt.ylabel('月票数') plt.show() # 使用matplotlib库将月票榜数据可视化,绘制饼图 plt.pie(month_tickets, labels=titles, autopct='%1.1f%%') plt.title('起点中文网月票榜') plt.show() ``` 通过这段代码,我们可以爬取起点中文网月票榜数据,并将数据可视化为条形图或饼图,更加直观地了解小说的排名情况和月票数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值