Python3使用xpath爬原创力文档

Python3使用xpath爬原创力文档

准备工作

首先,我们进入原创力文档官网,随便点击一篇pdf文章,进入如下界面:
在这里插入图片描述
然后点击“好的,开始阅读”进入全屏界面。接着,按“F12”进入开发者工具;点击开发者界面左上角的箭头符号,选择第一页,开发者工具界面则会定位相应的HTML标签处;定位的光标处中src中的“//view-cache.book118.com/view10/M00/1A/32/wKh2Dl9Df5SAcs8-AADV0nCN1hY314.png”则是我们后续下载需要的URL地址(在浏览器中搜索上述地址,就会发现第一页以图片的形式呈现在了网页中,这时我们可以右键保存)。
在这里插入图片描述
尝试点击其他页面,你会发现他们是有迹可循的,所有的光标都会定位到div<class=“webpreview-item”>这一标签下的img标签,所以这就是我们本次要爬的重点。

  • 注意事项:这时,你进入网页源代码,会发现源代码和你在开发者工具界面的源码完全不一样。这是因为该网站设计的反爬虫机制,它提供的源代码并不是你放大阅读的网页,而是你一开始进来的网页。
    在这里插入图片描述
    所以,无法通过该网页的url进行爬取。笔者,思考再三,想到了一个解决办法,复制方法阅读页面的开发者工具界面body标签里的源码复制到txt文件中,再读取txt文件(如果读者有更好的解决办法,欢迎在评论区交流学习!)
    在这里插入图片描述

  • 值得注意的是,一定要把所有页面全部加载出来,不然有些页面就没有src地址
    好的,啰嗦了这么多。下面,让我们进入源代码环节。

源代码

from urllib.request import urlretrieve
import time
from lxml import etree

# 从html.txt中读取网页源代码
with open('html.txt', 'r', encoding='utf-8') as file:
    results = file.read()

# 下载文件的页数
num = 0

results = etree.HTML(results)
content_list = results.xpath('//div/div[2]/div')
for content in content_list:
    img_url = content.xpath('.//img/@src')
    # 设个延时
    time.sleep(3)
    if len(img_url):
        img_url = img_url[0].strip()
        # pdf文件的src地址都是以//view开头的
        if img_url[2:6] == 'view':
            num += 1
            # 一定要在src地址前加上‘https:’,不然python无法识别会报错
            img_url = 'https:' + img_url
            img_name = str(num) + '.jpg'
            # 根据src地址下载图片,下载目录默认是当前工作路径
            urlretrieve(img_url, img_name)
            print('打印第', num, '张成功!')

xpath地址不知道的可以参考"右键copy点击xpath"。
在这里插入图片描述

  • 8
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值