python之爬取起点中文网

最近学了爬虫,想实战一下就选取了最近经常看小说的起点中文网来进行爬取
过程如下:

  1. 分析爬取信息
    爬取网址:https://www.qidian.com/rank?chn=-1
    爬取内容
    如上图有不同的分类,有奇幻,玄幻,武侠等分类,我们需要爬取每个分类里的各个排行榜的书名信息和排名信息
    分析网页HTML文本
    在页面HTML源码中找到排行榜内书名和排名所在的位置,分析这些信息在HTML内的结构

  2. 准备的python库工具

    import requests
    import pymongo
    from pyquery import PyQuery as pq
    from urllib.parse import urlencode
    

    requests请求库,用来发起页面请求,并获取返回的页面html文本
    pymongo库用来连接MongoDB数据库,操作数据库并存储数据
    pyquery库用来解析HTML文本,定位信息所在的节点,并获取信息
    urllib.prase库中的urlencode是用来在url后面添加参数,构造请求的url的

3.代码分析

  • 请求页面函数部分

    def get_page(chn):params  = {'chn':chn}headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36','Host':'www.qidian.com',}#把params参数通过urlencode参数添加到url上url = 'https://www.qidian.com/rank?' + urlencode(params)try:response = requests.get(url,headers=headers)        #请求url 获取响应if response.status_code == 200:return response.text            #若响应状态码为200,则返回页面html内容except Exception:print('Error')```
  • 获得页面的HTML文本后解析内容爬取想要的信息

      def get_data(page_html,chn):获得页面的HTML文本后解析内容爬取想要的信息:param page_html: 页面的源码:param chn: 页码数:return: 页面的详细信息page_info = {}list_info = []doc = pq(page_html)rank_list_row = doc('.rank-list').items()#获取书的排名for item in rank_list_row:list_info_ = get_detial_info(item)list_info.append(list_info_)#获书的分类book_sort = doc('.type-list p a').items()for item in book_sort:if chn == int(item.attr('data-chanid')):page_info[item.text()] = '{info}'.format(info=list_info)   #把书的排名和书的分类通过字典键值保存起来breakreturn page_info```
  • 获取各个排行榜的数据

    def get_detial_info(rank_list):'''获取页面各个排行榜的书的排名:param rank_list: 页面的每个排行榜的不同书的排名:return: 排名信息'''list_info = {}book_info = []list_name = rank_list.find('.wrap-title').text()[:-3]    #对获取的字符串进行切片处理,获取书名book_list = rank_list.find('li').items()                 #获取书在各个排行榜的排名for item in book_list:book_info_=get_book_info(item)book_info.append(book_info_)list_info[list_name] = '{info}'.format(info=book_info)   #把书的排名和书的名字通过字典键值存储return list_info
  • 获取书的信息

    def get_book_info(book_list):'''获取书名,和书的在各个排行榜的排名:param book_list:  页面各个排行榜的html文本:return: 书名和排名'''book_rank = book_list.attr('data-rid')book_name = book_list.find('a').text()return {'排名':book_rank,'书名':book_name,}
    
  • 把信息存储到MongDB上去:

    #连接MongDB数据库,创建集合进行存储信息
    client = pymongo.MongoClient(host='localhost',port=27017)
    DB  = client['Novel']
    collection = DB['Novel_Rank']def save_to_db(data):'''把爬取信息存储到mongoDB上:param data: 爬取信息:return:'''result = collection.insert_one(data)print('save succeed')
    
  • 主函数调用

       def main():'''主函数:return:'''for i in range(1,23):           #遍历页码text = get_page(i)page_info = get_data(text,i)if page_info:                   #如果获取到的字典内有内容则储存save_to_db(page_info)if __name__ == '__main__':main()```

4. 爬取结果
数据库内存储的信息

每个分类的排行榜信息:

这就完成对于起点中文网的内容爬取啦,对于写的错误和不好的地方大家可以在评论留言,我看到了会及时回复,谢谢大家

Python爬虫之爬取起点中文网相关推荐

  1. python爬虫之爬取起点中文网小说

    python爬虫之爬取起点中文网小说 hello大家好,这篇文章带大家来制作一个python爬虫爬取阅文集团旗下产品起点中文网的程序,这篇文章的灵感来源于本人制作的一个项目:电脑助手 启帆助手 ⬆是项 ...

  2. python爬虫之爬取起点中文原创小说排行榜

    学习python有段时间了,最近做了一个网上爬虫工具爬取起点中文原创小说排行榜数据,作为最近学习python的一个阶段性成果. 工具 对于做网络爬虫工具经常用到的就是chrome浏览器,主要用于抓取网 ...

  3. python爬虫,爬取起点网站小说

    使用python再来做一次爬虫:主要抓取玄幻类型的小说 目标网址:起点 使用模块:bs4,os模块 基本思路: 获取需求页面的元素代码,装到bs4容器里面,然后进行操作 首先获取接口:https:// ...

  4. Python分析并爬取起点中文网的章节数据,保存为txt文档

    如题,分析起点中文网,并提取出来章节链接,保存为txt文档. 代码仅供交流使用,请勿用作商业用途,如有违规,请联系删除 一,分析 1.打开带有章节的链接,例如:(随便选的一篇文章) 2.打开浏览器的抓 ...

  5. java爬虫抓取起点小说_爬虫实践-爬取起点中文网小说信息

    qidian.py: import xlwt import requests from lxml import etree import time all_info_list = [] def get ...

  6. python 爬虫抓取网页数据导出excel_Python爬虫|爬取起点中文网小说信息保存到Excel...

    前言: 爬取起点中文网全部小说基本信息,小说名.作者.类别.连载\完结情况.简介,并将爬取的数据存储与EXCEL表中 环境:Python3.7 PyCharm Chrome浏览器 主要模块:xlwt ...

  7. Go爬取起点中文网 解决文字反爬

    Go语言的爬虫库不如Python强大,却也五脏俱全. 今天我们分析如何爬取起点中文网数据,以及遇到反爬如何处理. 作品链接:http://www.365yg.com/i6678092837810078 ...

  8. scrapy爬取起点中文网24小时热销榜单(将数据存到数据库)

    系列文章目录 第一章:scrapy爬取起点中文网24小时热销榜单 第二章:scrapy爬取苏州二手房交易信息 第三章:scrapy爬取QQ音乐榜单歌曲及豆瓣电影信息 第四章:scrapy爬取起点中文网 ...

  9. Scrapy 爬取起点中文网存储到 MySQL 数据库(自定义 middleware)

    Scrapy 爬取起点中文网 1. 创建项目 2. 创建爬虫实例 3. 创建一个启动文件 main.py 4. 项目的总体树结构 5. settings.py 6. items.py 7. qidia ...

最新文章

  1. 三星6.0系统手机最简单激活XPOSED框架的教程
  2. 如何解析字符串类型的xml
  3. linux编译安装memcached
  4. mysql+索引优化+查询优化+存储优化_mysql利用覆盖索引避免回表优化查询
  5. 30.jvm.gc(GC之详解CMS收集过程和日志分析)
  6. leetcode 504. 七进制数(Java版)
  7. Microsoft Dynamics CRM 前瑞开发
  8. 手势识别与健身活动识别推理库20bn-realtimenet
  9. 在线解mysql_mysql锁表和解锁语句分享
  10. CSDN搜索可以搜博客代码了
  11. 通过使用 NTLite 工具实现精简Windows系统
  12. PowerDesigner(数据库建模工具) 使用教程
  13. C++ 解决多对一问题
  14. 高中计算机矩阵算法ppt,高中信息技术教科版必修1 数据与计算4.2 数值计算一等奖课件ppt...
  15. andorid 访问不到smms图片
  16. android 高德比例尺,高德地图——添加比例尺控件
  17. 阿里巴巴矢量图标库全选
  18. Java 8 新特性 宋红康跟学
  19. 儒猿秒杀季!互联网大厂的企业级风控系统项目实战
  20. 国内快速下arxiv里的文章

热门文章

  1. C语言实例8——古典问题:兔子问题
  2. NBA球队中英文名对照大全附带各个球队的LOGO手机壁纸
  3. 二维数组(图像)转变成3通道图
  4. phpstorm使用教程
  5. 【CSDN|每日一练】吃!吃!吃!
  6. 如何阅读源代码(关键词:阅读/源代码/高效率)
  7. IAR+openSDA+s32k144 环境搭建
  8. 八本最佳管理书籍,你读过几本?
  9. Java年月的正则表达式_java如何判断是否为有效的年月日
  10. 商场根据会员积分打折