selenium-爬取小说
selenium-爬取小说

1 import requests
2 from bs4 import BeautifulSoup
3 import sys
4 from selenium import webdriver
5 from selenium.webdriver.support.wait import WebDriverWait
6 from selenium.webdriver.common.by import By
7 from selenium.webdriver.support import expected_conditions as EC
8 import time
9
10 # [sɪˈliniəm] 硒
11
12
13 browser = webdriver.Chrome()
14 wait = WebDriverWait(browser, 10)
15
16
17 def get_total_page():
18 url = 'https://www.xxbiquge.com/0_807/'
19 browser.get(url)
20 html = browser.page_source
21 soup = BeautifulSoup(html, 'lxml')
22 dd = soup.find_all('dd')
23 # browser.close()
24 pages = len(dd)
25 return pages
26
27
28 def index_page(i):
29 """
30 加载出小说的每一章内容
31 :param i: 小说的第 i 章
32 """
33 if i == 1:
34 # 小说第一章的 Url 地址
35 url = "https://www.xxbiquge.com/0_807/4055527.html"
36 browser.get(url)
37 # 等待 Content 节点加载出来
38 wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#content')))
39 # 调用 get_info() 方法对页面进行解析
40 get_info()
41 # 寻找下一章点击的节点
42 next_p = browser.find_elements(By.XPATH, ('//div[@class="bottem2"]/a'))[
43 2] # //*[@id="wrapper"]/div[4]/div/div[6]/a[3]
44 # 找到后停顿 30 秒
45 time.sleep(1)
46 # 点击按钮
47 next_p.click()
48
49
50 def main():
51 """
52 遍历小说全部章节
53 :return:
54 """
55 total_page = get_total_page()
56 print(total_page)
57 for i in range(1, total_page + 1):
58 index_page(i)
59
60
61 def get_info():
62 """
63 提取每一章小说的章章节名及正文
64 #wrapper > div.content_read > div > div.bookname > h1
65 :return:
66 """
67 # 找到章节的名字
68 name = browser.find_element_by_css_selector('#wrapper > div.content_read > div > div.bookname > h1').text
69 print(name)
70 # 找到小说正文
71 content = browser.find_element_by_id('content').text
72 print(content)
73 # 将拿到的小说名和对应的正文内容写入 txt 文件中
74 with open('雪中悍刀行.txt', 'a', encoding="utf-8") as f:
75 # '\n'.join([name, content]) 转化为字符串
76 f.write('\n'.join([name, content]))
77 # 换两行
78 f.write('\n\n')
79
80
81 if __name__ == '__main__':
82 main()
selenium-爬取小说的更多相关文章
- Python实战项目网络爬虫 之 爬取小说吧小说正文
本次实战项目适合,有一定Python语法知识的小白学员.本人也是根据一些网上的资料,自己摸索编写的内容.有不明白的童鞋,欢迎提问. 目的:爬取百度小说吧中的原创小说<猎奇师>部分小说内容 ...
- [Python爬虫] Selenium爬取新浪微博客户端用户信息、热点话题及评论 (上)
转载自:http://blog.csdn.net/eastmount/article/details/51231852 一. 文章介绍 源码下载地址:http://download.csdn.net/ ...
- python爬虫——爬取小说 | 探索白子画和花千骨的爱恨情仇(转载)
转载出处:药少敏 ,感谢原作者清晰的讲解思路! 下述代码是我通过自己互联网搜索和拜读完此篇文章之后写出的具有同样效果的爬虫代码: from bs4 import BeautifulSoup imp ...
- selenium爬取煎蛋网
selenium爬取煎蛋网 直接上代码 from selenium import webdriver from selenium.webdriver.support.ui import WebDriv ...
- 利用selenium爬取京东商品信息存放到mongodb
利用selenium爬取京东商城的商品信息思路: 1.首先进入京东的搜索页面,分析搜索页面信息可以得到路由结构 2.根据页面信息可以看到京东在搜索页面使用了懒加载,所以为了解决这个问题,使用递归.等待 ...
- 利用Selenium爬取淘宝商品信息
一. Selenium和PhantomJS介绍 Selenium是一个用于Web应用程序测试的工具,Selenium直接运行在浏览器中,就像真正的用户在操作一样.由于这个性质,Selenium也是一 ...
- Scrapy 框架 使用 selenium 爬取动态加载内容
使用 selenium 爬取动态加载内容 开启中间件 DOWNLOADER_MIDDLEWARES = { 'wangyiPro.middlewares.WangyiproDownloaderMidd ...
- 使用selenium爬取网站动态数据
处理页面动态加载的爬取 selenium selenium是python的一个第三方库,可以实现让浏览器完成自动化的操作,比如说点击按钮拖动滚轮等 环境搭建: 安装:pip install selen ...
- scrapy框架 + selenium 爬取豆瓣电影top250......
废话不说,直接上代码..... 目录结构 items.py import scrapy class DoubanCrawlerItem(scrapy.Item): # 电影名称 movieName = ...
- 爬虫学习06用selenium爬取空间
用selenium爬取空间 from selenium import webdriver from lxml import etree import time pro = webdriver.Chro ...
随机推荐
- 路由组件传参-props解耦方式(主要)
在组件中使用 $route 会使之与其对应路由形成高度耦合,从而使组件只能在某些特定的 URL 上使用,限制了其灵活性. 使用 props 将组件和路由解耦: 取代与 $route 的耦合 const ...
- java Map 四种遍历方法
public static void main(String[] args) { Map<String, String> map = new HashMap<String, Stri ...
- BASE64 Encode Decode
package com.humi.encryption; import java.io.IOException; import java.io.UnsupportedEncodingException ...
- QT打开文件或文件夹或网络地址
打开文件或文件夹 如果是文件或文件夹 必须带file:/// 后面可以是文件(夹)的绝对路径 QDesktopServices::openUrl(QUrl("file:///C:/Docum ...
- android-studio-ide 安装到运行第一个helloword,坑记录
1: 安装是提示 机器虚拟化问题,系统如开启了Hyper-V,必须关闭服务 2:安装完后,建立第一个项目,gradle build 一直转圈,最后报错 Gradle project sync fai ...
- 小程序 ----踩坑 ---安卓iOS兼容等
关于小程序一些小功能的代码都在这个GitHub上,感兴趣的可以去看看,https://github.com/huihuijiang/miniProgram目前有:列表左滑删除,拖拽浮标 一.小程序坑1 ...
- win10环境安装配置Nginx
前言: 参考 https://blog.csdn.net/kisscatforever/article/details/73129270 Nginx的应用场景 1. http服务器.Ngin ...
- 2017JAVA面试题附答案
JAVA基础 JAVA中的几种基本类型,各占用多少字节? String能被继承吗?为什么? 不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变.平 ...
- 随机模块 random 函数的调用
随机模块 random 作用: 用于模拟或生成随机输出的模块. 用法示意: import random as R 函数名 描述 R.random() 返回一个[0, 1) 之间的随机实数 R.unif ...
- 第2章 python入门
基本数据类型(int, bool, str) 1.1 python基本数据类型 1.int ==> 整数. 主要⽤来进⾏数学运算 2.str ==> 字符串 可以保存少量数据并进⾏相应的操 ...