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

版权声明:本文为章鱼哥原创文章,若要转载,请注明出处 https://blog.youkuaiyun.com/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程序,大部分网站都有自己的反爬虫程序,细心一点总能够找到方法的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值