小白爬虫入门——爬取图片和文字(超详细)

本文介绍如何利用lxml库从网页中抓取文本和图片资源,详细讲解了XPath的选择器语法及其应用,包括获取特定文本、标签下的所有文本及图片链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用lxml包,从简单的网页中获取文本和图片
爬取网址:http://www.pythonscraping.com/pages/page3.htm

第一步 ,看网页结构

F12打开开发者模式,大致网页结构如下,看图:
这里写图片描述

下面这个图片是针对一个tr标签的详解,代码与显示一一对应:
这里写图片描述

第二步 ,代码解释
lxml简单使用

在自己想爬取的文本位置上单击右键,选择copy–>Xpath,即可获得xpath内容,但需要我们稍作修改。
这里写图片描述
获得的xpath如下:

//*[@id="gift1"]/td[4]/img

但由于id是变化的,而每项里面的class是不变的,所以修改一下,并加上src属性,得到:

//*[@class="gift"]/td[4]/img/@src


1、获取文本— 以第一个td为例

title = html.xpath('//*[@class="gift"]/td[1]/text()')

2、 获取标签下所有文本——获得第二个td

这里主要是第二部分的描述,td下不仅仅是文本还有span标签,所以如果用text()会出现许多空行并且获取不到span下的文本,这里要用string()

#获得html中所有的class="gift"元素下的所有第二个td子元素
desc =  html.xpath('//*[@class="gift"]/td[2]')
for i in range(0,len(desc)):
    #处理元素获得字符串
    descText = desc[i].xpath('string(.)')

3、 获取图片
这里写图片描述
获取img标签中的src属性中的内容

imgs=html.xpath('//*[@class="gift"]/td[4]/img/@src')

在读取图片时注意,由于爬取的图片信息是这种形式:../img/gifts/img1.jpg
在保存图片时需要改写一下路径

img = '../img/gifts/img1.jpg'
实际图片路径:
imgUrl = 'http://www.pythonscraping.com/x/'+img
`x/`只是为了多一层,名字随便,抵消掉`../`


第三步 ,所有代码

导入三个包,如果没有该包,就pip install ,但如果pip install lxml 失败,就看看这个 通过lxml的.whl文件来进行安装

import requests
from lxml import etree
import re

#文本信息保存在test.txt
file = open("test.txt",'w',encoding='utf-8')

url = "http://www.pythonscraping.com/pages/page3.html"

res = requests.get(url)
content = res.content
html = etree.HTML(content)

#数据解析
title = html.xpath('//*[@class="gift"]/td[1]/text()')
desc =  html.xpath('//*[@class="gift"]/td[2]')
price = html.xpath('//*[@class="gift"]/td[3]/text()')
imgs=html.xpath('//*[@class="gift"]/td[4]/img/@src')

#写入文件
x = len(title)
for i in range(0,x):
    # 描述要特别处理
    descText = desc[i].xpath('string(.)')

    #保存文本信息
    file.write("第"+str(i+1)+"行数据"+"\n"+title[i]+"\n"+descText+"\n"+price[i]+"\n\n")

    #下载图片
    with open('F:\PythonWork\\taobao_code\images\\'+str(i)+'.jpg', 'wb') as fd:
        picture=requests.get('http://www.pythonscraping.com/x/'+imgs[i]).content
        fd.write(picture)
        print("成功下载%s.jpg"%i)

#关闭文件
file.close()


总结

重点注意获取标签里面所有文本内容

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值