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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值