python爬虫xpath实战练练手

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
import requests
from lxml import etree
import os

url = 'https://www.sshs.cc/page/4'

# get htmlText
r = requests.get(url)
r.encoding = r.apparent_encoding

# parse htmlText
dom = etree.HTML(r.text)

# parse html hrefs return list
hrefs = dom.xpath("//article/header/h2/a/@href")
titles = dom.xpath("//article/header/h2/a/@title")
print("帖子链接解析完毕!")

if not os.path.exists('绅士会所壁纸爬虫'):
    print('已创建文件夹-->绅士会所壁纸爬虫')
    os.mkdir("绅士会所壁纸爬虫")
os.chdir('绅士会所壁纸爬虫')

for i in range(len(hrefs)):
    r1 = requests.get(hrefs[i])
    r1.encoding = r1.apparent_encoding
    dom1 = etree.HTML(r1.text)
    imgurl = dom1.xpath("//article/p/img/@src")
    imgname = dom1.xpath("//article/p/img/@alt")

    filename = re.sub('[\\\/:*?"<>|]', '', titles[i])
    if not os.path.exists(filename):
        print('已创建文件夹-->', filename)
        os.mkdir(filename)
    os.chdir(filename)
    print(filename, '正在下载...')
    for j in range(len(imgurl)):
        if not os.path.exists(imgname[j]):
            with open(imgname[j], 'wb') as f:
                f.write(requests.get(imgurl[j]).content)
        else:
            print('已存在图片-->', imgname[j])
    print(filename, '下载完成')
    os.chdir('..')

如上简单的代码,主要这次用xpath来寻找要爬的链接,主要重点在于解析xpath解析过程,注意<img src=..>中img是元素,src是属性,若要得到src链接就要用//img/@src(//前面省略),如果是//img[@src]那么返回的是他的属性类型,不是确切的url。此外里面还用到正则表达式用来排除文件夹非法字符的而不是用来寻找链接的。

url可由最后page/1改变数字得到其他网页,因为一页爬的时间还是太久了就只让他每次爬一张,而且都是福利也没啥好玩的?,学习学习就行了。

不懂可问,不好可点。

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值