Xpath在Xpath地址后面加上/text()后返回的值是[]怎么办
这个是url地址https://www.zbj.com/search/service/?kw=saas&r=2&l=0
import requests
from lxml import etree
url = 'https://www.zbj.com/search/service/?kw=saas&r=2&l=0'
resp = requests.get(url)
html = etree.HTML(resp.text)
divs = html.xpath('//*[@id="__layout"]/div/div[3]/div/div[4]/div/div[2]/div[1]/div[1]/text()')
print(divs)
这样就返回[]
如果把后面的/text()去掉可以就有结果了
在这个坑里挣扎一天了,网上搜到的很多方法也试了,都没用,可不可以指点一下
不知道你这个问题是否已经解决, 如果还没有解决的话:请求网络页面,对页面进行解析,找到对应图片的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()
现在只是懂了点爬虫皮毛,每次都做个记录,努力成为一名真正的爬虫工程师😊
请各路大神们不吝赐教