起点中文网爬虫实战requests库以及xpath的应用

知识梳理:

本次爬虫是一次简单的复习应用,需要用到requests库以及xpath.
在开始爬虫之前,首先需要导入这两个库

import requests
from lxml import etree

首先制定爬虫框架

import requests
from lxml import etree
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"}
def parse_url(url):     #爬取网页章节列表pass
def parse_list(response):#处理章节列表内容并获取各个章节的具体urlpass
def parse_detail(url):#爬取每个章节的详细内容并加以处理pass
def save_text(ls,title,base_title):#保存最终结果到txt文件中,pass
def main():base_url = input("请输入小说首页的IP地址:")response = parse_url(base_url)detail_urls = parse_list(response)base_title = input("请输入小说名称:")for detail_url in detail_urls:text_ls,title = parse_detail(detail_url)save_text(text_ls,title,base_title)
if __name__ == '__main__':main()

页面内容分析

因为我要爬取一部小说的全部章节的内容,首先随便打开一部小说,进入到主要章节目录,用Chrome浏览器的网页分析查看网页结构内容,

分析之后可以发现,所有的章节URL都在 li 标签之下的 a 标签的 href 属性里面,并且所有的 li 标签又都在class="cf"的 ul 标签下面,搜索发现,整个网页只有一个这样的 ul 标签,接下来可以开始处理章节列表内容

def parse_url(url):response = requests.get(url,headers=headers)return response.content
def parse_list(response):ls = []html = etree.HTML(response)lis = html.xpath('//ul[@class="cf"]/li')for li in lis:href = li.xpath('.//a/@href')[0]href = "https:"+hrefls.append(href)return ls

首先分析详情章节页面的title,也就是章节的标题,到时候可以拿下来作为文件存取时候的章节区分,分析页面可以看到
章节标题位于class="content-wrap"的 span 标签下面,再次分析详细内容,发现详细内容位于class="read-content j_readContent"的div标签下的p标签下,分析完成之后可以编写接下来的过程了。

def parse_detail(url):ls = []response = requests.get(url,headers=headers).contenthtml = etree.HTML(response)texts = html.xpath('//div[@class="read-content j_readContent"]//p/text()')title = html.xpath('//span[@class="content-wrap"]/text()')[0]for text in texts:text = text.strip()+'\n'ls.append(text)return ls,title

最后是文件保存,

def save_text(ls,title,base_title):file_name = base_title+title+".txt"with open(file_name,'w',encoding='utf-8') as fp:fp.write(title+'\n\n')for i in ls:fp.write(i)print("file  {}  complete".format(file_name))

编写完成之后尝试运行,
效果还是可以的,不过还是有着很大的缺陷,进一步的学习能够更好的完成这个工作。完整代码如下:

import requests
from lxml import etree
import time
#   https://read.qidian.com/chapter/_O7kFXJAAns8kjk6dUsm_A2/Y_96UVhhOa6aGfXRMrUjdw2
#   https://read.qidian.com/chapter/_O7kFXJAAns8kjk6dUsm_A2/BqHrIuEKr7bM5j8_3RRvhw2
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"}
def parse_url(url):response = requests.get(url,headers=headers)return response.content
def parse_list(response):ls = []html = etree.HTML(response)lis = html.xpath('//ul[@class="cf"]/li')for li in lis:href = li.xpath('.//a/@href')[0]href = "https:"+hrefls.append(href)return ls
def parse_detail(url):ls = []response = requests.get(url,headers=headers).contenthtml = etree.HTML(response)texts = html.xpath('//div[@class="read-content j_readContent"]//p/text()')title = html.xpath('//span[@class="content-wrap"]/text()')[0]for text in texts:text = text.strip()+'\n'ls.append(text)return ls,title
def save_text(ls,title,base_title):file_name = base_title+title+".txt"with open(file_name,'w',encoding='utf-8') as fp:fp.write(title+'\n\n')for i in ls:fp.write(i)print("file  {}  complete".format(file_name))
def main():base_url = input("请输入小说首页的IP地址:")response = parse_url(base_url)detail_urls = parse_list(response)base_title = input("请输入小说名称:")for detail_url in detail_urls:text_ls,title = parse_detail(detail_url)save_text(text_ls,title,base_title)# time.sleep(1)
if __name__ == '__main__':main()

起点中文网爬虫实战requests库以及xpath的应用相关推荐

  1. python爬虫——使用requests库和xpath爬取猎聘网职位详情

    文章目录 前言 一.页面分析 1.职位列表页面分析 2.职位详情页面URL获取 3.职位详情页面分析 至此,所有页面解析完毕,开始写代码. 二.代码编写 1.导入相应库 2.设置代理和随机请求头 3. ...

  2. 淘宝爬虫实战---requests库实现模拟登陆模块

    淘宝网---爬虫 (一).requests库实现淘宝网模拟登陆 最近想要写一个淘宝网的爬虫,具备模拟登陆.代理IP池.根据关键词爬取搜索页面商品数据,第一个目标就是淘宝的模拟登陆,不得不说,淘宝的用户 ...

  3. Python之起点中文网爬虫

    Python之起点中文网爬虫 注:请勿用于其他用途,仅供学习使用 import requests import re import os from lxml import etreehead = {& ...

  4. python爬虫基础-requests库

    python爬虫基础-requests库 python爬虫 1.什么是爬虫? 通过编写程序,模拟浏览器上网,然后让其去互联网上抓取数据的过程. 注意:浏览器抓取的数据对应的页面是一个完整的页面. 为什 ...

  5. 煎蛋网妹子图爬虫(requests库实现)

    煎蛋网妹子图爬虫(requests库实现) 文章目录 煎蛋网妹子图爬虫(requests库实现) 一.前言 环境配置 二.完整代码 一.前言 说到煎蛋网爬虫,相比很多人都写过,我这里试着用reques ...

  6. python的requests库的添加代理_python爬虫之requests库使用代理

    python爬虫之requests库使用代理 发布时间:2020-03-25 17:00:54 来源:亿速云 阅读:110 作者:小新 今天小编分享的是关于python爬虫的requests库使用代理 ...

  7. python爬虫requests实战_Python爬虫之requests库网络爬取简单实战

    实例1:直接爬取网页 实例2 : 构造headers,突破访问限制,模拟浏览器爬取网页 实例3 : 分析请求参数,构造请求参数爬取所需网页 实例4: 爬取图片 实例5: 分析请求参数,构造请求参数爬取 ...

  8. python爬虫requests库_python爬虫使用Requests库 - pytorch中文网

    在入门教程中我们介绍了urllib库和urllib2的用法,同时我们了解一些爬虫的基础以及对爬虫有了基本的了解.其实在我们生产环境中,使用Request库更加方便与实用,同时我们这需要短短的几行代码就 ...

  9. python爬虫中requests库和正则表达式之淘宝爬虫实战

    #python版本基于2.7 使用requests库是需要安装的,requests库相比urllib 库来说更高级方便一点,同时与scrapy相比较还是不够强大,本文主要介绍利用requests库和正 ...

最新文章

  1. pyrender 安装
  2. 以太坊 p2p Server 原理及实现
  3. CodeForces - 833B The Bakery
  4. sql 取重复key中的第一条_SQL每日一题
  5. Cell重磅综述:关于人类转录因子,你想知道的都在这
  6. Tomcat映射虚拟目录的三种方式(2021版)
  7. 分布式事务slides
  8. 关于支付回调的一些思考
  9. springboot+vue+element+mybatisplus项目(后端)
  10. 将图片转化为txt文本显示
  11. JSONObject对象和JSONArray对象的使用
  12. 记录Java学习书籍
  13. 经方的魅力第二版》读书摘录
  14. 文件服务器要备案么,icp备案一定要云服务器吗
  15. 只因为给我打了0.1分,重新撸了个记账小程序
  16. 武大计算机专业薪酬,2018大学毕业生薪酬排行榜公布:武大输给华科,更意想不到的高校是它...
  17. Linux下干净卸载mysql详解
  18. react-native 拨打电话
  19. 2016年中国信息无障碍十大进展
  20. 脱离圈套:“你希望与什么样的上级共事?”

热门文章

  1. IEEE导入参考文献到Endnote
  2. 真的都是黑幕么?普通学生考研还有机会逆袭么?
  3. 获取sql server与年、季度、月、周首尾有关的时间函数
  4. c++11 智能指针-辅助类 (std::bad_weak_ptr)
  5. 不可多得的干货!mysqlerror2003
  6. 书籍 沉浸室学习方法_小学生必须掌握的60种科学学习方法(“情境+故事+方法”的沉浸式学习模式。在故事情境下掌握学习方法的养成书。)...
  7. awd php,AWD模式下的各类PHP木马
  8. AI 与自动化:更多的自动化,全新的自动化方式?
  9. 【2023注册测绘师资格考试综合能力攻略】条件方程数量的计算专题
  10. 阿尔·里斯-市场营销的22条法则(22条商规)-16