亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

一次爬蟲(chóng)實(shí)踐記錄

hzx / 3159人閱讀

摘要:在和偉鋒探討的時(shí)候,我突然想到了可以用爬蟲(chóng)的手段,來(lái)將數(shù)據(jù)中心的數(shù)據(jù)全部爬取出來(lái)。這里做一個(gè)技術(shù)記錄,中間涉及到的知識(shí)點(diǎn)包括如何通過(guò)中的,以及維持登陸狀態(tài),以爬取不同的需要登陸以后才能查看的網(wǎng)頁(yè)。

前言說(shuō)明:

公司在2017年3月的時(shí)候開(kāi)發(fā)過(guò)一個(gè)「數(shù)據(jù)中心」,是將有贊的用戶和訂單信息通過(guò)API拉取到自己開(kāi)發(fā)的網(wǎng)站上,再結(jié)合我們自己和用戶溝通的信息,組成一個(gè)簡(jiǎn)單的用戶管理中心。數(shù)據(jù)中心雖然簡(jiǎn)單,但對(duì)我們意義非常大,它的出現(xiàn)標(biāo)志著我們想要定位一個(gè)用戶的時(shí)候告別了“辦公室吼一吼”的純?nèi)巳夥椒ā?/p>

不過(guò)隨著時(shí)間的推移,數(shù)據(jù)中心跟不上我們的業(yè)務(wù)發(fā)展,我們想在近期將其重新做一遍,進(jìn)行一系列大的功能升級(jí)。別的都好說(shuō),唯一的問(wèn)題是在過(guò)去一年半中,我們?cè)跀?shù)據(jù)中心添加了大量的信息,比如同學(xué)的微信號(hào)、昵稱、他家長(zhǎng)的信息、他的訂單備注信息等等。隨著遠(yuǎn)良的離職,后來(lái)的人已經(jīng)很難從數(shù)據(jù)庫(kù)中找出這些數(shù)據(jù)。在和偉鋒探討CRM的時(shí)候,我突然想到了可以用爬蟲(chóng)的手段,來(lái)將數(shù)據(jù)中心的數(shù)據(jù)全部爬取出來(lái)。于是便有了下面的代碼,經(jīng)過(guò)斷斷續(xù)續(xù)兩三天的研究,我終于搞定了代碼,順利爬取了我們所有超過(guò)1萬(wàn)條的用戶數(shù)據(jù)。

這里做一個(gè)技術(shù)記錄,中間涉及到的知識(shí)點(diǎn)包括:

如何通過(guò)Network中的authorization,以及requests.session()維持登陸狀態(tài),以爬取不同的需要登陸以后才能查看的網(wǎng)頁(yè)。這里面有個(gè)坑,就是我先用了session的方法來(lái)試圖解決問(wèn)題,但是怎么試都總是失敗,反復(fù)查詢后發(fā)現(xiàn)發(fā)現(xiàn)數(shù)據(jù)中心是用node.js來(lái)寫(xiě)的,而這樣的網(wǎng)頁(yè)用的是token來(lái)驗(yàn)證身份,session()那套行不通。最后我在頭信息中發(fā)現(xiàn)authorization,直接粘到headers的信息才解決問(wèn)題的;

查看網(wǎng)頁(yè)源代碼,如果你需要的信息不在源代碼中,那就說(shuō)明要找的內(nèi)容在JS文件中,在開(kāi)發(fā)者模式下找到Network中的XHR或者JS,里面一般都會(huì)有某個(gè)JS文件包含你要的信息(header包含頭信息,preview包含要爬取的信息,最上面的request URL則是要爬取內(nèi)容所需要的網(wǎng)址信息)。

復(fù)習(xí)了json的使用方法。另外,不管是python還是json,爬取的關(guān)鍵都是找到循環(huán)點(diǎn),因?yàn)檠h(huán)點(diǎn)意味著有規(guī)律循環(huán)的開(kāi)始;

復(fù)習(xí)了在python中打開(kāi)、寫(xiě)入csv文件的方式;

復(fù)習(xí)了在python中連接數(shù)據(jù)庫(kù)的知識(shí);Python3 MySQL 數(shù)據(jù)庫(kù)連接 - PyMySQL 驅(qū)動(dòng)

學(xué)習(xí)了try...except的用法:將可能出現(xiàn)bug的代碼寫(xiě)入try的部分,然后在except那里寫(xiě)入報(bào)錯(cuò)類型和報(bào)錯(cuò)的提示。報(bào)錯(cuò)提示可以根據(jù)需要自定義。這樣的好處是程序出現(xiàn)bug的時(shí)候不會(huì)報(bào)錯(cuò)終止,而是會(huì)給出報(bào)錯(cuò)提示以后繼續(xù)后面的運(yùn)行,直到結(jié)束。(Python)異常處理try...except、raise

復(fù)習(xí)列表構(gòu)造的知識(shí);

簡(jiǎn)單學(xué)習(xí)了SQL的基本操作語(yǔ)句 SQL基本語(yǔ)法

import requests
import json
import csv
import pymysql
import time


# 從數(shù)據(jù)庫(kù)中獲取所有的用戶ID

yz_uids = []

db = pymysql.connect("192.168.31.24","root","root","danci_tddc") # 連接數(shù)據(jù)庫(kù)
cursor = db.cursor() # 用cursor 方法獲取操作游標(biāo)
sql = "SELECT * FROM td_crm_customers" # 寫(xiě)sql語(yǔ)句
cursor.execute(sql) # 執(zhí)行sql語(yǔ)句
data = cursor.fetchall() # 獲取數(shù)據(jù)
for row in data:
    yz_uid = row[0]
    yz_uids.append(yz_uid)

db.close() # 關(guān)閉數(shù)據(jù)庫(kù)連接



login_url = "http://data.testdaily.cn/#!/login"


headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36",
    "Referer": "http://data.testdaily.cn/",
    "Cookie": "Hm_lvt_fc5a4042b4f7e4c87111dce89bb04bea=1539932447,1540895924",
    "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1OGI3ZWU4ZmI2NmVmZjEwMWM5NGVjODgiLCJ1c2VybmFtZSI6Inplbmd5aWNoYW8iLCJleHAiOjE1NDIxODA5OTksImlhdCI6MTU0MTU3NjE5OX0.dl7o4lnPZnfw7e606sVOrW4dYCKOmQJzSsMBHCFPAc4"
}

# 打開(kāi)存儲(chǔ)的csv文檔
f = open("/Users/damo/Desktop/4.csv", "w+")
writer = csv.writer(f)
writer.writerow(["user_id", "wechat", "nickname", "majia", "phone", "address", "name", "tag", "parentInfo", "remark", "update_time","trade_history"])

# 獲取單個(gè)頁(yè)面的數(shù)據(jù)
def get_info(url):

    try:
        # 讀取客戶詳情頁(yè)面并獲取json數(shù)據(jù)
        res = requests.get(url,headers = headers)
        json_data = json.loads(res.text)

        user_id = json_data["user_id"]
        wechat = json_data["wechat"]
        if "nickname" in json_data.keys():
            nickname = json_data["nickname"]
        else:
            nickname = ""
        majia = json_data["tdAlias"]
        phone = json_data["mobile"]
        address = json_data["address"]
        name = json_data["name"]
        tag = json_data["tags"]
        if "parentsInfo" in json_data.keys():
            parentInfo = json_data["parentsInfo"]
        else:
            parentInfo = ""
        if "remark" in json_data.keys():
            remark = json_data["remark"]
        else:
            remark = ""
        update_time = json_data["update_time"]
        trade_history = json_data["trades"]

        writer.writerow([user_id,wechat,nickname,majia,phone,address,name,tag,parentInfo,remark,update_time,trade_history]) # 將數(shù)據(jù)寫(xiě)入csv文件
    except TypeError:
        print(url + "有問(wèn)題")

if __name__ == "__main__":
    urls = ["http://data.testdaily.cn/api/customers/{}".format(i) for i in yz_uids] # 構(gòu)造列表表達(dá)式
    for url in urls:
        get_info(url)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/44974.html

相關(guān)文章

  • Evil Python

    摘要:用將倒放這次讓我們一個(gè)用做一個(gè)小工具將動(dòng)態(tài)圖片倒序播放發(fā)現(xiàn)引力波的機(jī)構(gòu)使用的包美國(guó)科學(xué)家日宣布,他們?nèi)ツ暝率状翁綔y(cè)到引力波。宣布這一發(fā)現(xiàn)的,是激光干涉引力波天文臺(tái)的負(fù)責(zé)人。這個(gè)機(jī)構(gòu)誕生于上世紀(jì)年代,進(jìn)行引力波觀測(cè)已經(jīng)有近年。 那些年我們寫(xiě)過(guò)的爬蟲(chóng) 從寫(xiě) nodejs 的第一個(gè)爬蟲(chóng)開(kāi)始陸陸續(xù)續(xù)寫(xiě)了好幾個(gè)爬蟲(chóng),從爬拉勾網(wǎng)上的職位信息到爬豆瓣上的租房帖子,再到去爬知乎上的妹子照片什么的,爬蟲(chóng)...

    Turbo 評(píng)論0 收藏0
  • 爬蟲(chóng)攻防實(shí)踐

    摘要:之前在學(xué)校曾經(jīng)用過(guò)的方法做過(guò)一些爬蟲(chóng)腳本來(lái)玩,從正式轉(zhuǎn)前端之后,出于興趣,我對(duì)爬蟲(chóng)和反爬蟲(chóng)又做了一些了解,并且做了一些爬蟲(chóng)攻防的實(shí)踐。爬蟲(chóng)腳本通常會(huì)很頻繁的進(jìn)行網(wǎng)絡(luò)請(qǐng)求,比如要爬取豆瓣排行榜的電影,就會(huì)連續(xù)發(fā)送個(gè)網(wǎng)絡(luò)請(qǐng)求。 之前在學(xué)校曾經(jīng)用過(guò)request+xpath的方法做過(guò)一些爬蟲(chóng)腳本來(lái)玩,從ios正式轉(zhuǎn)前端之后,出于興趣,我對(duì)爬蟲(chóng)和反爬蟲(chóng)又做了一些了解,并且做了一些爬蟲(chóng)攻防的實(shí)踐...

    wanglu1209 評(píng)論0 收藏0
  • 爬蟲(chóng)攻防實(shí)踐

    摘要:之前在學(xué)校曾經(jīng)用過(guò)的方法做過(guò)一些爬蟲(chóng)腳本來(lái)玩,從正式轉(zhuǎn)前端之后,出于興趣,我對(duì)爬蟲(chóng)和反爬蟲(chóng)又做了一些了解,并且做了一些爬蟲(chóng)攻防的實(shí)踐。爬蟲(chóng)腳本通常會(huì)很頻繁的進(jìn)行網(wǎng)絡(luò)請(qǐng)求,比如要爬取豆瓣排行榜的電影,就會(huì)連續(xù)發(fā)送個(gè)網(wǎng)絡(luò)請(qǐng)求。 之前在學(xué)校曾經(jīng)用過(guò)request+xpath的方法做過(guò)一些爬蟲(chóng)腳本來(lái)玩,從ios正式轉(zhuǎn)前端之后,出于興趣,我對(duì)爬蟲(chóng)和反爬蟲(chóng)又做了一些了解,并且做了一些爬蟲(chóng)攻防的實(shí)踐...

    xiangzhihong 評(píng)論0 收藏0
  • SegmentFault 助力 PyCon2014 China

    摘要:月日,助力在北京舉辦全球最盛大的年度聚會(huì),國(guó)內(nèi)外頂尖的工程師做了很精彩的分享和互動(dòng),現(xiàn)場(chǎng)多名愛(ài)好者參與了此次技術(shù)主題盛宴。后續(xù)會(huì)有更多現(xiàn)場(chǎng)照片持續(xù)更新 11月15日,SegmentFault 助力PyCon China 在北京舉辦全球 Pythoneer 最盛大的年度聚會(huì),國(guó)內(nèi)外頂尖的Python 工程師做了很精彩的分享和互動(dòng),現(xiàn)場(chǎng)300多名python愛(ài)好者參與了此次技術(shù)主題盛宴。 ...

    junbaor 評(píng)論0 收藏0
  • python爬蟲(chóng)實(shí)踐: 豆瓣小組命令行客戶端

    摘要:主要特性前一陣重新組織了一下代碼加了命令行信息用起來(lái)更方便了一些初步實(shí)現(xiàn)了豆瓣小組及用戶相關(guān)的爬蟲(chóng)和請(qǐng)求基于和沒(méi)有用高階的諸如之類的爬蟲(chóng)工具所有的命令行輸出都是標(biāo)準(zhǔn)的格式可以使用操作安裝僅支持使用兩種命令模式客戶端接口調(diào)用和豆瓣模塊接口 主要特性 前一陣重新組織了一下代碼, 加了命令行help信息, 用起來(lái)更方便了一些 初步實(shí)現(xiàn)了豆瓣小組及用戶相關(guān)的API爬蟲(chóng)和請(qǐng)求 基于reques...

    golden_hamster 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

hzx

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<