這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)使用python怎么爬取網(wǎng)站的購(gòu)買記錄,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營(yíng)銷推廣、網(wǎng)站重做改版、北海網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁面制作、商城系統(tǒng)網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為北海等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
python的數(shù)據(jù)類型:1. 數(shù)字類型,包括int(整型)、long(長(zhǎng)整型)和float(浮點(diǎn)型)。2.字符串,分別是str類型和unicode類型。3.布爾型,Python布爾類型也是用于邏輯運(yùn)算,有兩個(gè)值:True(真)和False(假)。4.列表,列表是Python中使用最頻繁的數(shù)據(jù)類型,集合中可以放任何數(shù)據(jù)類型。5. 元組,元組用”()”標(biāo)識(shí),內(nèi)部元素用逗號(hào)隔開。6. 字典,字典是一種鍵值對(duì)的集合。7. 集合,集合是一個(gè)無序的、不重復(fù)的數(shù)據(jù)組合。
第一步:添加必要的庫,創(chuàng)建一個(gè)BUY類
import requests,re,xlwt
第二步:class Color;
def __init__(self): '''添加請(qǐng)求頭''' self.headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ' '(KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36', } #添加查詢訂單地址 self.port = 'http://xxxxxx.xxfaka.cn/?mod=query&data=xxxxxxxxxxx' '''請(qǐng)求視頻網(wǎng)頁鏈接''' def request_link(self): self.response = requests.get(self.port, headers=self.headers) self.html = self.response.text print(self.html) if __name__ == '__main__': app= Color() app.request_link()
直接運(yùn)行之后的數(shù)據(jù)有點(diǎn)多,這里沒有完全顯示
第三步:找到cookie添加到請(qǐng)求頭
根據(jù)搜索資料發(fā)現(xiàn)需要加cookie,然后又去網(wǎng)頁找到cookie添加到請(qǐng)求頭,然后headers會(huì)出現(xiàn)下面這種情況
self.headers = { 'Cookie':'mysid=bcd178f6a7784bdaf63c03e321cfb77a; PHPSESSID=gml9nd9psrik73840v6jem6mm4; sec_defend=baa2a7703f2f3326fa7a366428aef295ac40ff679f2fec0284578de88e87bcac; sec_defend_time=1', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ' '(KHTML, like Gecko) Chrome/77.0.3560.141 Safari/537.36', }
第四步:再次運(yùn)行代碼
這時(shí)候就可以拿到網(wǎng)頁數(shù)據(jù)了
初步打算一次直接匹配一個(gè)訂單全部消息,但是發(fā)現(xiàn)有對(duì)括號(hào)導(dǎo)致一直匹配內(nèi)容為空
(2020-12-24 01:09:09)
…太長(zhǎng)了…
用兩個(gè)replace將括號(hào)替換為空
self.html = self.html.replace('(','') self.html = self.html.replace(')', '') re.findall(r'…(.*?)…(.*?)…',self.html)
第五步:一條語句扣一個(gè)內(nèi)容,之后在for循環(huán)將對(duì)應(yīng)數(shù)據(jù)放到一個(gè)列表
匹配了六七個(gè)(.?)內(nèi)容,發(fā)現(xiàn)總是不能準(zhǔn)確扣到具體內(nèi)容,有可能好幾條訂單被扣到一個(gè)(.?)里面。這個(gè)時(shí)候可以換個(gè)思路,一條語句扣一個(gè)內(nèi)容,之后在for循環(huán)將對(duì)應(yīng)數(shù)據(jù)放到一個(gè)列表,然后整體再放入列表組成二維列表。
#獲取訂單時(shí)間 self.order_time = re.findall(r'(.*?).*?商品名稱:(.*?)
聯(lián)系方式:.*?總價(jià)(.*?)元.*?(.*?)
',self.html) #獲取商品名稱 self.pur_info = re.findall(r'',self.html) #獲取訂單聯(lián)系方式 self.contact_info = re.findall(r'',self.html) #獲取訂單總價(jià) self.price_total = re.findall(r'總價(jià)(.*?)元',self.html) #獲取賬號(hào)不完全信息 self.km_info = re.findall(r'(.*?)
',self.html) #獲取下單總數(shù) self.num_total = re.findall(r'
寫出來基本就是上面的樣子,運(yùn)行發(fā)現(xiàn)四五秒以后直接卡死,然后半小時(shí)沒動(dòng)重新開機(jī)了,代碼沒保存再運(yùn)行append那就報(bào)錯(cuò)了,就暫時(shí)放棄這種方法,重新回到之前的思路,把數(shù)據(jù)一次都提取出來,既然這單個(gè)的都準(zhǔn)確提取了,放到一起就可以了。把每個(gè)放到一起連接起來運(yùn)行,直接生成了二維數(shù)據(jù)。
for i in range(0,len(self.info)): self.info[i] = list(self.info[i]) #通過這里來判斷訂單的三種情況 km_info = re.findall(r'>賬號(hào)信息:(.*?)
',self.info[i][5]) if km_info==[]: km_info = re.findall(r'卡密可能漏發(fā),請(qǐng)聯(lián)系客服',self.info[i][5]) if km_info == []: km_net = re.findall(r'
卡密操作: