朋友找我写了一个小爬虫脚本,她想获取某个网站上某本书的所有文本,且需要保留原来的格式。
网页长这个样子。—— 爬虫跑完,把数据文件发给她,她开心地说要请我喝咖啡。呵!
![0f983ec5d8ab27f5d6c92192c8196cb0.png](https://i-blog.csdnimg.cn/blog_migrate/8706043b54abc0ff4002a2bd67d0d375.jpeg)
以下是源代码。
第一步,启动driver,无头模式。
from time import sleep
from datetime import datetime
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import pandas as pd
import random
# 启动 driver,无头模式
def start_driver_dark():
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--disable-gpu")
driver = webdriver.Chrome(options=chrome_options)
return driver
driver = start_driver_dark()
第二步,获取所有章节信息:标题、url。
url = 'http://xiaolai.co/books/8327ac77840b8e66d8245eef28052099/index.html'
driver.get(url)
sleep(2)
# 获取所有章节的信息
chaptersx = driver.find_elements_by_xpath('/html/body/div/div[1]/nav/ul//li/a')
chapters = {}
n = 0
for c in chaptersx:
chapters[n] = {}
chapters[n]["title"] = c.text
chapters[n]["url"] = c.get_attribute("href")
n += 1
![1d729f79e079299ef5a5f27fa1de5310.png](https://i-blog.csdnimg.cn/blog_migrate/f34f00d9b58b92fdfbda4c81ad6c6051.jpeg)
第三步,读取章节的内容,并把 html 源码写文件。
不直接爬取文本,而是爬取文本及其包含的html源码,是为了保留所有格式信息。
# 读取章节的内容,并把 html 源码写文件。
n = len(chapters)
for i in range(n):
urlx = chapters[i]["url"]
driver.get(urlx)
sleep(2)
page = driver.find_element_by_class_name('page').get_attribute("outerHTML")
with open("yc.html","a+",encoding="utf-8") as f:
f.write(page)
第4步,秘密武器,直接把html源码在线一键转换为 markdown 语法的文本,保存到 yc.md
文件交活。
齐活,收工。
点赞,收藏,关注,分享四连。好人一生平安。
看不懂的,评论留言问我。
想知道秘密武器是什么,站内私信我。