Python爬虫之爬取起点中文网
python之爬取起点中文网
最近学了爬虫,想实战一下就选取了最近经常看小说的起点中文网来进行爬取
过程如下:
分析爬取信息:
爬取网址:https://www.qidian.com/rank?chn=-1
爬取内容:
如上图有不同的分类,有奇幻,玄幻,武侠等分类,我们需要爬取每个分类里的各个排行榜的书名信息和排名信息
分析网页HTML文本:
在页面HTML源码中找到排行榜内书名和排名所在的位置,分析这些信息在HTML内的结构准备的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爬虫之爬取起点中文网相关推荐
- python爬虫之爬取起点中文网小说
python爬虫之爬取起点中文网小说 hello大家好,这篇文章带大家来制作一个python爬虫爬取阅文集团旗下产品起点中文网的程序,这篇文章的灵感来源于本人制作的一个项目:电脑助手 启帆助手 ⬆是项 ...
- python爬虫之爬取起点中文原创小说排行榜
学习python有段时间了,最近做了一个网上爬虫工具爬取起点中文原创小说排行榜数据,作为最近学习python的一个阶段性成果. 工具 对于做网络爬虫工具经常用到的就是chrome浏览器,主要用于抓取网 ...
- python爬虫,爬取起点网站小说
使用python再来做一次爬虫:主要抓取玄幻类型的小说 目标网址:起点 使用模块:bs4,os模块 基本思路: 获取需求页面的元素代码,装到bs4容器里面,然后进行操作 首先获取接口:https:// ...
- Python分析并爬取起点中文网的章节数据,保存为txt文档
如题,分析起点中文网,并提取出来章节链接,保存为txt文档. 代码仅供交流使用,请勿用作商业用途,如有违规,请联系删除 一,分析 1.打开带有章节的链接,例如:(随便选的一篇文章) 2.打开浏览器的抓 ...
- java爬虫抓取起点小说_爬虫实践-爬取起点中文网小说信息
qidian.py: import xlwt import requests from lxml import etree import time all_info_list = [] def get ...
- python 爬虫抓取网页数据导出excel_Python爬虫|爬取起点中文网小说信息保存到Excel...
前言: 爬取起点中文网全部小说基本信息,小说名.作者.类别.连载\完结情况.简介,并将爬取的数据存储与EXCEL表中 环境:Python3.7 PyCharm Chrome浏览器 主要模块:xlwt ...
- Go爬取起点中文网 解决文字反爬
Go语言的爬虫库不如Python强大,却也五脏俱全. 今天我们分析如何爬取起点中文网数据,以及遇到反爬如何处理. 作品链接:http://www.365yg.com/i6678092837810078 ...
- scrapy爬取起点中文网24小时热销榜单(将数据存到数据库)
系列文章目录 第一章:scrapy爬取起点中文网24小时热销榜单 第二章:scrapy爬取苏州二手房交易信息 第三章:scrapy爬取QQ音乐榜单歌曲及豆瓣电影信息 第四章:scrapy爬取起点中文网 ...
- Scrapy 爬取起点中文网存储到 MySQL 数据库(自定义 middleware)
Scrapy 爬取起点中文网 1. 创建项目 2. 创建爬虫实例 3. 创建一个启动文件 main.py 4. 项目的总体树结构 5. settings.py 6. items.py 7. qidia ...
最新文章
- 三星6.0系统手机最简单激活XPOSED框架的教程
- 如何解析字符串类型的xml
- linux编译安装memcached
- mysql+索引优化+查询优化+存储优化_mysql利用覆盖索引避免回表优化查询
- 30.jvm.gc(GC之详解CMS收集过程和日志分析)
- leetcode 504. 七进制数(Java版)
- Microsoft Dynamics CRM 前瑞开发
- 手势识别与健身活动识别推理库20bn-realtimenet
- 在线解mysql_mysql锁表和解锁语句分享
- CSDN搜索可以搜博客代码了
- 通过使用 NTLite 工具实现精简Windows系统
- PowerDesigner(数据库建模工具) 使用教程
- C++ 解决多对一问题
- 高中计算机矩阵算法ppt,高中信息技术教科版必修1 数据与计算4.2 数值计算一等奖课件ppt...
- andorid 访问不到smms图片
- android 高德比例尺,高德地图——添加比例尺控件
- 阿里巴巴矢量图标库全选
- Java 8 新特性 宋红康跟学
- 儒猿秒杀季!互联网大厂的企业级风控系统项目实战
- 国内快速下arxiv里的文章