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 ...
随机推荐
- 怎样设置cookie的到期时间
1. 使用Cookie的: Expires 属性. 它可以设置cookie的过期时间. 下面的代码表示id这条cookie的过期时间是2015年10月21日早上7点28分; Set-Cookie: i ...
- uva 10325基础容斥
题目:给你一个数n以及m个数字,问1~n中不能被这m个数字整除的数字的个数. 分析:容斥原理.组合数学.数字1-n中能被a.b整除的数字的个数分别是n/a,n/b: 则1-n中能被a或b整数的数字个数 ...
- sql简易教程
讲干货,不啰嗦,本教程主要基于Mysql数据库,讲解sql的基本使用. 数据库主要包括增.删.改.查等基本操作,以下为设计到的常用的sql语句: 一.查 1.select 语法查询 SELECT co ...
- 安卓开发之利用XmlPullParser解析XML文件
package com.lidaochen.phonecall; import android.support.v7.app.AppCompatActivity; import android.os. ...
- linux之getopts
在编写shell脚本中,经常要处理一些输入参数,在使用过程中发现getopts更加方便,能够很好的处理用户输入的参数和参数值. getopts用于处理用户输入参数,举例说明使用方法: while ge ...
- kolla-ansible 部署多region
目录 kolla-ansible 部署多region 一.前言 二.部署架构 三.部署细节 1.部署RegionOne 2.部署RegionTwo kolla-ansible 部署多region 一. ...
- printf固定一行打印倒计时的实现
@2019-07-15 [小记] #include<stdlib.h> #include <stdio.h> #include <time.h> #include ...
- C 字符串几点
1.字符串结尾必须为“\0” 2.多种处理函数在<string.h> 3.常用字符串处理函数: 1.strlen 求字符串长度(\0不算在内) 2.strcpy(a,b) 将b复制到a中 ...
- Istio技术与实践04:最佳实践之教你写一个完整的Mixer Adapter
Istio内置的部分适配器以及相应功能举例如下: circonus:微服务监控分析平台. cloudwatch:针对AWS云资源监控的工具. fluentd:开源的日志采集工具. prometheus ...
- Educational Codeforces Round 40 G. Castle Defense (二分+滑动数组+greedy)
G. Castle Defense time limit per test 1.5 seconds memory limit per test 256 megabytes input standard ...