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-爬取小说的更多相关文章

  1. Python实战项目网络爬虫 之 爬取小说吧小说正文

    本次实战项目适合,有一定Python语法知识的小白学员.本人也是根据一些网上的资料,自己摸索编写的内容.有不明白的童鞋,欢迎提问. 目的:爬取百度小说吧中的原创小说<猎奇师>部分小说内容 ...

  2. [Python爬虫] Selenium爬取新浪微博客户端用户信息、热点话题及评论 (上)

    转载自:http://blog.csdn.net/eastmount/article/details/51231852 一. 文章介绍 源码下载地址:http://download.csdn.net/ ...

  3. python爬虫——爬取小说 | 探索白子画和花千骨的爱恨情仇(转载)

    转载出处:药少敏   ,感谢原作者清晰的讲解思路! 下述代码是我通过自己互联网搜索和拜读完此篇文章之后写出的具有同样效果的爬虫代码: from bs4 import BeautifulSoup imp ...

  4. selenium爬取煎蛋网

    selenium爬取煎蛋网 直接上代码 from selenium import webdriver from selenium.webdriver.support.ui import WebDriv ...

  5. 利用selenium爬取京东商品信息存放到mongodb

    利用selenium爬取京东商城的商品信息思路: 1.首先进入京东的搜索页面,分析搜索页面信息可以得到路由结构 2.根据页面信息可以看到京东在搜索页面使用了懒加载,所以为了解决这个问题,使用递归.等待 ...

  6. 利用Selenium爬取淘宝商品信息

    一.  Selenium和PhantomJS介绍 Selenium是一个用于Web应用程序测试的工具,Selenium直接运行在浏览器中,就像真正的用户在操作一样.由于这个性质,Selenium也是一 ...

  7. Scrapy 框架 使用 selenium 爬取动态加载内容

    使用 selenium 爬取动态加载内容 开启中间件 DOWNLOADER_MIDDLEWARES = { 'wangyiPro.middlewares.WangyiproDownloaderMidd ...

  8. 使用selenium爬取网站动态数据

    处理页面动态加载的爬取 selenium selenium是python的一个第三方库,可以实现让浏览器完成自动化的操作,比如说点击按钮拖动滚轮等 环境搭建: 安装:pip install selen ...

  9. scrapy框架 + selenium 爬取豆瓣电影top250......

    废话不说,直接上代码..... 目录结构 items.py import scrapy class DoubanCrawlerItem(scrapy.Item): # 电影名称 movieName = ...

  10. 爬虫学习06用selenium爬取空间

    用selenium爬取空间 from selenium import webdriver from lxml import etree import time pro = webdriver.Chro ...

随机推荐

  1. 【背包问题】PACKING

    题目描述 It was bound to happen.  Modernisation has reached the North Pole.  Faced with escalating costs ...

  2. SQL Server循环插入

    一个SQL循环插入的代码,运行正常: BEGIN DECLARE @idx AS INT; DECLARE @NodeName nvarchar(255); DECLARE @OtherName nv ...

  3. 牛客 26C 手铐 (缩环, 树形dp)

    先缩环建树, 对于树上个环$x,y$, 假设$x,y$路径上有$cnt$个环(不包括$x,y$), 贡献就为$2^{cnt}$. 这题卡常挺严重的, 刚开始用并查集合并竟然T了. #include & ...

  4. wpf 判断项目中的某个窗体是否已经打开或者已经存在

    foreach (Window item in Application.Current.Windows) {     if (item is window1) return; }

  5. JS基础_全局作用域

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. 很low的四位验证码实现

    <html> <head> <meta charset="utf-8"> </head> <body> <inpu ...

  7. ES6入门十:iterator迭代器

    迭代模式 ES6迭代器标准化接口 迭代循环 自定义迭代器 迭代器消耗 一.迭代模式 迭代模式中,通常有一个包含某种数据集合的对象.该数据可能存在一个复杂数据结构内部,而要提供一种简单的方法能够访问数据 ...

  8. 支持向量机通俗导论 ——理解SVM的三层境界 总结

    1.什么是支持向量机(SVM) 所谓支持向量机,顾名思义,分为两部分了解:一,什么是支持向量(简单来说,就是支持或支撑平面上把两类类别划分开来的超平面的向量点):二,这里的“机(machine,机器) ...

  9. Notepad++快捷键及使用技巧

    常用快捷键: CTRL+Q 注释/取消注释 用Notepad++写代码,要是有一些重复的代码想copy一下,还真不容易,又得动用鼠标,巨烦人....有木有简单的方法呢,确实还是有的不过也不算太好用.主 ...

  10. 【Git】四、本地Git的工作原理

    一.工作区 第一篇创建版本库讲的有些笼统,这里详细区分一下各个概念 在第一篇我们创建了一个文件夹GitRepo,但其实这个文件夹本身并不是版本库,只是我们的工作区.我们所有的文件创建和修改都在这里执行 ...