1. 程式人生 > >小白爬蟲入門——爬取圖片和文字(超詳細)

小白爬蟲入門——爬取圖片和文字(超詳細)

第一步 ,看網頁結構

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()

總結

重點注意獲取標籤裡面所有文字內容