溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用python怎么爬取網站的購買記錄

發(fā)布時間:2021-05-06 17:12:28 來源:億速云 閱讀:413 作者:Leah 欄目:編程語言

這期內容當中小編將會給大家?guī)碛嘘P使用python怎么爬取網站的購買記錄,文章內容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

python的數據類型有哪些?

python的數據類型:1. 數字類型,包括int(整型)、long(長整型)和float(浮點型)。2.字符串,分別是str類型和unicode類型。3.布爾型,Python布爾類型也是用于邏輯運算,有兩個值:True(真)和False(假)。4.列表,列表是Python中使用最頻繁的數據類型,集合中可以放任何數據類型。5. 元組,元組用”()”標識,內部元素用逗號隔開。6. 字典,字典是一種鍵值對的集合。7. 集合,集合是一個無序的、不重復的數據組合。

第一步:添加必要的庫,創(chuàng)建一個BUY類

import  requests,re,xlwt

第二步:class Color;

def __init__(self):
    '''添加請求頭'''
    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'

'''請求視頻網頁鏈接'''
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()

直接運行之后的數據有點多,這里沒有完全顯示

第三步:找到cookie添加到請求頭

根據搜索資料發(fā)現需要加cookie,然后又去網頁找到cookie添加到請求頭,然后headers會出現下面這種情況

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',
                                    }

第四步:再次運行代碼

這時候就可以拿到網頁數據了

初步打算一次直接匹配一個訂單全部消息,但是發(fā)現有對括號導致一直匹配內容為空

</span>  (<font size="2" color="#836FFF">2020-12-24 01:09:09</font>)<br>…太長了…<hr>

用兩個replace將括號替換為空

self.html = self.html.replace('(','')
    self.html = self.html.replace(')', '')
    re.findall(r'…(.*?)…(.*?)…',self.html)

第五步:一條語句扣一個內容,之后在for循環(huán)將對應數據放到一個列表

匹配了六七個(.?)內容,發(fā)現總是不能準確扣到具體內容,有可能好幾條訂單被扣到一個(.?)里面。這個時候可以換個思路,一條語句扣一個內容,之后在for循環(huán)將對應數據放到一個列表,然后整體再放入列表組成二維列表。

#獲取訂單時間
            self.order_time = re.findall(r'<font size=".*?" color="#836FFF">(.*?)</font>.*?<br><h5>商品名稱:<a href="\./\?mod=buy&tid=\w?\w?\w?\w?">(.*?)</a></h5>聯系方式:.*?總價<font color=".*?">(.*?)</font>元.*?</strong></font>(.*?)<hr>',self.html)
    #獲取商品名稱
    self.pur_info = re.findall(r'',self.html)
    #獲取訂單聯系方式
    self.contact_info = re.findall(r'',self.html)
    #獲取訂單總價
    self.price_total = re.findall(r'總價<font color=".*?">(.*?)</font>元',self.html)
    #獲取賬號不完全信息
    self.km_info = re.findall(r'</strong></font>(.*?)<hr>',self.html)
    #獲取下單總數
    self.num_total = re.findall(r'<li><span class="rows">共(.*?)條</span> </li>', self.html)
            temp_info =[]
        for i in range(0,len(self.order_time)):
                    for lie in range(0,6):#lie
                            temp_info.append(self.order_time[lie])
                            temp_info.append(self.pur_info[lie])
                            temp_info.append(self.contact_info[lie])
                            temp_info.append(self.price_total[lie])
                            temp_info.append(self.km_info[lie])
                            temp_info.append(self.num_total[0])
                    temp_info.append(''.join(temp_info))
                    self.account_info.append(list(temp_info))
            print(self.account_info)

寫出來基本就是上面的樣子,運行發(fā)現四五秒以后直接卡死,然后半小時沒動重新開機了,代碼沒保存再運行append那就報錯了,就暫時放棄這種方法,重新回到之前的思路,把數據一次都提取出來,既然這單個的都準確提取了,放到一起就可以了。把每個放到一起連接起來運行,直接生成了二維數據。

for i in range(0,len(self.info)):
            self.info[i] = list(self.info[i])

    #通過這里來判斷訂單的三種情況
    km_info = re.findall(r'>賬號信息:(.*?)</b><br>',self.info[i][5])
    if km_info==[]:
            km_info = re.findall(r'</b><span class="(.*?)">卡密可能漏發(fā),請聯系客服</span>',self.info[i][5])
    if km_info == []:
            km_net = re.findall(r'<br>卡密操作:<a href=".(.*?)" title="點擊查看卡密"><button', self.info[i][5])
            km_net = self.port +(''.join(km_net))#多張卡密提取鏈接
            #尚未完成一個單子多張卡密提取
    self.info[i][5] = km_info

上述就是小編為大家分享的使用python怎么爬取網站的購買記錄了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI