爬蟲步驟:
?1.獲取想要爬取網(wǎng)頁的源代碼匀哄。
?2.解析這些代碼大咱,獲取游戲名稱及Icon圖片下載鏈接。
?3.下載圖片咆霜,將圖片存儲(chǔ)到指定文件夾。
舉例:
?目標(biāo)網(wǎng)頁:https://www.taptap.com/category/e378?page=1
?爬取信息:【游戲名稱】嘶朱,【游戲Icon下載鏈接】.
PS:這里游戲名稱主要用來命名每張下載下來的圖片名稱
第一步:通過requests獲得網(wǎng)頁的源代碼蛾坯。
Eg1:
import requests
html=request.get(url)
第二步:通過etree把這些代碼解析成xpath能夠使用的格式,通過xpath爬取【游戲名稱】疏遏,【游戲Icon下載鏈接】脉课。
Eg2:
from lxml import etree #導(dǎo)入etree
selector = etree.HTML(html.text)
??完成上面操作后我們就可以用xpath進(jìn)行讀取代碼了,找到我們想要的內(nèi)容位置财异。通過chrome的開發(fā)者工具定位信息位置.
??{xpath使用方法:
????//定位根節(jié)點(diǎn)
????/往下層尋找
????提取文本內(nèi)容:/text()
????提取某個(gè)屬性的內(nèi)容:/@XXX}
data = selector.xpath('//div[@class="taptap-app-item"]')
??這里采用了先抓大再抓小的步驟倘零,我們先把所有的游戲都抓下來,再在這些游戲里提取我們想要的每個(gè)游戲中的信息戳寸。
在'div[@class="taptap-app-item"]'中我們?cè)诰唧w定位呈驶。
【游戲名稱】:
'div[@class="app-item-caption"]/a[@class="item-caption-title flex-text-overflow"]/h4[@class="flex-text"]/text()’
【游戲Icon下載鏈接】:
'a/img/@data-src'
第三步:下載圖片,將圖片存儲(chǔ)到指定文件夾
Eg3:
from urllib import request
local = 'f:\img\%s.png' % (game_name)#定義圖片存儲(chǔ)的位置和每個(gè)圖片的名字
request.urlretrieve(url,local) #下載圖片
完整代碼
from lxml import etree
from multiprocessing.dummy import Pool as ThreadPool
import requests
from urllib import request
def spider(url):
html = requests.get(url)
selector = etree.HTML(html.text)
data = selector.xpath('//div[@class="taptap-app-item"]')
for each in data:
game_name = each.xpath('div[@class="app-item-caption"]/a[@class="item-caption-title flex-text-overflow"]/h4[@class="flex-text"]/text()')[0]
picture_link = each.xpath('a/img/@data-src')[0]
print('downloading:',picture_link)
local = 'f:\img\%s.png' % (game_name)#定義圖片存儲(chǔ)的位置和每個(gè)圖片的名字
request.urlretrieve(picture_link,local) #下載圖片
if __name__=="__main__":
Pool = ThreadPool(4)
page = []
for i in range(1,3): #爬取1-2頁
newpage = 'https://www.taptap.com/category/e378?page=' + str(i)
page.append(newpage)
results = Pool.map(spider,page)
Pool.close()