python爬取book118中的书籍

前言

不满足于上次从360doc爬取了概率论的答案,这次便研究了一下book118,爬取了里面我需要的答案书。不过由于网站的设计比360doc的复杂,我又不擅长java的爬虫,所以这次用python获取图片链接,接着用之前写的java下载图片并合并成pdf。

网站分析

提取内嵌html

任意打开一本书,开始预览全文
在这里插入图片描述
F12调出chrome的控制台,开始寻找图片的链接
在这里插入图片描述
取样移动到图片上,可以看到这里获得的就是图片的链接,我们根据这个url就能获得图片资源了。
在这里插入图片描述
为了获取链接的方便,我准备将预览的html提取出来,直接进去爬取链接。因为这个预览其实是加载了另一个html,它上午地址就在如下。
在这里插入图片描述
直接从浏览器访问这个地址,可以进入一个更简洁的预览状态。
在这里插入图片描述

分析内嵌html

继续F12来分析网站,可以发现图片在id为ctn的div下,其中的p0、p1、p2即为对应页数。
在这里插入图片描述
仔细查看发现,它并未全部加载完,而且图片链接毫无规律,所以我打算用selenium翻页一张张获取
在这里插入图片描述
不难找到翻页按钮的id
在这里插入图片描述
手动翻页看看,后面的图片也一点点被加载出来了。
在这里插入图片描述
这样以来根据id的顺序,循环起来便可以获得所有的图片链接啦,不再过多分析,上代码吧。

获取图片链接

代码展示

我的代码只是获取了所有图片链接并存到MongoDB便于我java去使用,擅长python的话,可以继续用python下载这些链接的图片也不算麻烦。

from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

from save_mongo import save_to_mongo  #这是我自己封装的工具包

browser = webdriver.Chrome()
wait = WebDriverWait(browser, 60)
# 这里的url是内嵌的html地址
browser.get('http://view56.book118.com/?readpage=sGIHz3VDh4qjvNC39O3YGA==&furl=o4j9ZG7fK94ywCJ0aQkdUad3YkM4Kc1@bPc_5q6yqfMcdR5aGeBGGEOqooprci7Mc2hNBPV8646vY0GJFEVC47nwNPrDw0CMZ_Z3K6Xglfs=&n=1')
# 获取翻页按钮
nextpage = browser.find_element_by_id('nextBtn')
for i in range(0, 220):
    try:
    	# 获取相应页面
        item = wait.until(
            EC.presence_of_element_located((By.CSS_SELECTOR, '#p'+str(i)))
        )
        # 获取页面中的图片链接并打印
        img = item.find_element_by_tag_name('img')
        url = img.get_attribute('src')
        print(url)
        # save_to_mongo("book118", {"page": str(i+1), "url": url})  #这是我自己封装的工具方法
        nextpage.click()
    except TimeoutException:
        print("加载出错")
        break

运行结果

可以看到图片的链接都获取到了
在这里插入图片描述
随便点开一个查看,就是对应页面的图片,只需要将其下载下即可
在这里插入图片描述
220条全都成功存到了MongoDB当中
在这里插入图片描述

下载并合成pdf

关于合成pdf的操作,我在之前的文档已经演示过;以后有时间再来完善python的这个操作。
https://blog.csdn.net/weixin_44112790/article/details/86775221
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44112790/article/details/87867051
今日推荐