今天給大家分享一個(gè)小網(wǎng)站的數(shù)據(jù)采集,并寫(xiě)到excel里面!
分析網(wǎng)站
目標(biāo)網(wǎng)站是“小咪購(gòu)”,這里有天貓所有的含有購(gòu)物券的商品信息,我們今天就來(lái)抓它吧!
隨便找一段文字,然后點(diǎn)擊右鍵查看網(wǎng)頁(yè)源代碼,看看是否存在該文字,如果存在,那么這個(gè)網(wǎng)頁(yè)就是靜態(tài)網(wǎng)站了!很幸運(yùn),這個(gè)網(wǎng)站居然是靜態(tài)的。
那就簡(jiǎn)單了,不需要去分析ajax加載數(shù)據(jù)或者找json包了,直接獲取網(wǎng)頁(yè)源代碼==>>匹配相關(guān)內(nèi)容==>>保存數(shù)據(jù)即可!
工具和庫(kù)
Windows+python3.6
import random
import time
import requests
from lxml import etree
import xlwt
用這幾個(gè)庫(kù)就可以搞定了!注意xlwt和xlrd這2個(gè)庫(kù)都是操作excel的,一個(gè)是保存數(shù)據(jù),一個(gè)是讀取數(shù)據(jù),不要搞混了。
開(kāi)始寫(xiě)代碼
首先寫(xiě)一個(gè)函數(shù),將所有的爬蟲(chóng)工作寫(xiě)到函數(shù)里,如下圖
這個(gè)網(wǎng)站需要寫(xiě)上headers,不寫(xiě)是抓不到數(shù)據(jù)的!新建一個(gè)列表,將爬到的相關(guān)數(shù)據(jù)寫(xiě)入列表,它的形式大概是這樣的:【【產(chǎn)品信息A1,2,3……】,【產(chǎn)品信息B1,2,3……】……】,這么寫(xiě)列表是因?yàn)槲覀冏詈笠獙⑺麄儗?xiě)如excel表格,那么列表中的每一個(gè)元素(還是列表形式)都是一行數(shù)據(jù),方便寫(xiě)入!
注意第33行,列表構(gòu)成的時(shí)候,用+連接會(huì)將所有列表中的元素放入一個(gè)列表,比如:【1,2,3】+【4,5】=【1,2,3,4,5】,而用append()函數(shù)則會(huì)將后面的內(nèi)容作為一個(gè)元素加入列表中,比如:[1,2,3].append([4,5])=[1,2,3,[4,5]]
下來(lái)就是寫(xiě)入excel了,首先是新建excel表格,并寫(xiě)入第一行數(shù)據(jù)
后面的數(shù)據(jù),依次按格式寫(xiě)入并最后用wb.save(路徑)的方式保存即可!完整代碼及效果如下
由于網(wǎng)站更新的很快(官方說(shuō)是10分鐘。。。),所以也沒(méi)有抓取那么多,所有的頁(yè)面有大約600多頁(yè),一頁(yè)100條信息,也就是說(shuō)一共有6萬(wàn)多條商品信息,如果不用多線程的話會(huì)很慢!
代碼在上傳的過(guò)程中會(huì)有壓縮,如果實(shí)在看不清楚的話,大家可以私信我獲取源碼!