不知道你这个问题是否已经解决, 如果还没有解决的话:
- 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7460213
- 你也可以参考下这篇文章:xpath使用text()失效
- 您还可以看一下 CSDN就业班老师的爬虫试听课课程中的 XPath语法与案例小节, 巩固相关知识点
- 除此之外, 这篇博客: 解析彼岸图网图片—xpath简单应用中的 使用xpath解析图片的url及名称 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
请求网络页面,对页面进行解析,找到对应图片的url
支持用户自定义图片类型
在此也解决了一个中文乱码的问题
手动设置响应数据的编码格式(处理中文乱码)
response.encoding = ‘utf-8’
针对乱码的地方重新编码
xxx_name.encode(‘iso-8859-1’).decode(‘gbk’)
#!/usr/bin/env python
# encoding: utf-8
"""
@file: xpath2.py
@time: 2020/2/28 11:14
"""
# 彼岸图网
import requests
from lxml import etree
import os
import pypinyin
# 不带声调的(style=pypinyin.NORMAL)
def pinyin(word):
s = ''
for i in pypinyin.pinyin(word, style=pypinyin.NORMAL):
s += ''.join(i)
return s
def bi_an():
word = input('请输入所要下载的图片类型:')
# 创建一个文件夹
file = './' + word
if not os.path.exists(file):
os.mkdir(file)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/80.0.3987.116 Safari/537.36'
}
url_p = "http://pic.netbian.com/4k%s/"
url = format(url_p % pinyin(word=word))
response = requests.get(url=url, headers=headers)
# 手动设置响应数据的编码格式(处理中文乱码)
# response.encoding = 'utf-8'
page_text = response.text
# 数据解析:src属性值 alt属性值
tree = etree.HTML(page_text)
li_list = tree.xpath('//div[@class="slist"]/ul/li')
for li in li_list:
img_src = 'http://pic.netbian.com' + li.xpath('./a/img/@src')[0]
img_name = li.xpath('./a/img/@alt')[0] + '.jpg'
# 通用处理中文乱码的解决方案
img_name = img_name.encode('iso-8859-1').decode('gbk')
# print(img_name, img_src)
# 请求图片并进行持久化存储
img_data = requests.get(url=img_src, headers=headers).content
img_path = file + '/' + img_name
with open(img_path, 'wb') as fp:
fp.write(img_data)
print(img_name, "下载成功!!!")
if __name__ == '__main__':
bi_an()
现在只是懂了点爬虫皮毛,每次都做个记录,努力成为一名真正的爬虫工程师😊
请各路大神们不吝赐教
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^