中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

怎么做阿里巴巴官網(wǎng)站模板建站教程

怎么做阿里巴巴官網(wǎng)站,模板建站教程,wordpress做電商網(wǎng)站,購物網(wǎng)站開發(fā)教程視頻爬蟲專欄:http://t.csdnimg.cn/WfCSx 文件存儲(chǔ)形式多種多樣,比如可以保存成 TXT 純文本形式,也可以保存為 JSON 格式、CSV 格式等,本節(jié)就來了解一下文本文件的存儲(chǔ)方式。 TXT 文本存儲(chǔ) 將數(shù)據(jù)保存到 TXT 文本的操作非常簡單&am…

爬蟲專欄:http://t.csdnimg.cn/WfCSx

文件存儲(chǔ)形式多種多樣,比如可以保存成 TXT 純文本形式,也可以保存為 JSON 格式、CSV 格式等,本節(jié)就來了解一下文本文件的存儲(chǔ)方式。

TXT 文本存儲(chǔ)

將數(shù)據(jù)保存到 TXT 文本的操作非常簡單,而且 TXT 文本幾乎兼容任何平臺(tái),但是這有個(gè)缺點(diǎn),那就是不利于檢索。所以如果對(duì)檢索和數(shù)據(jù)結(jié)構(gòu)要求不高,追求方便第一的話,可以采用 TXT 文本存儲(chǔ)。本節(jié)中,我們就來看下如何利用 Python 保存 TXT 文本文件。

1. 本節(jié)目標(biāo)

本節(jié)中,我們要保存知乎上 “發(fā)現(xiàn)” 頁面的 “熱門話題” 部分,將其問題和答案統(tǒng)一保存成文本形式。

2. 基本實(shí)例

首先,可以用 requests 將網(wǎng)頁源代碼獲取下來,然后使用 pyquery 解析庫解析,接下來將提取的標(biāo)題、回答者、回答保存到文本,代碼如下:

import requests
from pyquery import PyQuery as pq
?
url = 'https://www.zhihu.com/explore'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}
html = requests.get(url, headers=headers).text
doc = pq(html)
items = doc('.explore-tab .feed-item').items()
for item in items:question = item.find('h2').text()author = item.find('.author-link-line').text()answer = pq(item.find('.content').html()).text()file = open('explore.txt', 'a', encoding='utf-8')file.write('\n'.join([question, author, answer]))file.write('\n' + '=' * 50 + '\n')file.close()

這里主要是為了演示文件保存的方式,因此 requests 異常處理部分在此省去。首先,用 requests 提取知乎的 “發(fā)現(xiàn)” 頁面,然后將熱門話題的問題、回答者、答案全文提取出來,然后利用 Python 提供的 open 方法打開一個(gè)文本文件,獲取一個(gè)文件操作對(duì)象,這里賦值為 file,接著利用 file 對(duì)象的 write 方法將提取的內(nèi)容寫入文件,最后調(diào)用 close 方法將其關(guān)閉,這樣抓取的內(nèi)容即可成功寫入文本中了。

運(yùn)行程序,可以發(fā)現(xiàn)在本地生成了一個(gè) explore.txt 文件,其內(nèi)容如圖所示。

這樣熱門問答的內(nèi)容就被保存成文本形式了。

這里 open 方法的第一個(gè)參數(shù)即要保存的目標(biāo)文件名稱,第二個(gè)參數(shù)為 a,代表以追加方式寫入到文本。另外,我們還指定了文件的編碼為 utf-8。最后,寫入完成后,還需要調(diào)用 close 方法來關(guān)閉文件對(duì)象。

3. 打開方式

在剛才的實(shí)例中,open 方法的第二個(gè)參數(shù)設(shè)置成了 a,這樣在每次寫入文本時(shí)不會(huì)清空源文件,而是在文件末尾寫入新的內(nèi)容,這是一種文件打開方式。關(guān)于文件的打開方式,其實(shí)還有其他幾種,這里簡要介紹一下。

  • r:以只讀方式打開文件。文件的指針將會(huì)放在文件的開頭。這是默認(rèn)模式。

  • rb:以二進(jìn)制只讀方式打開一個(gè)文件。文件指針將會(huì)放在文件的開頭。

  • r+:以讀寫方式打開一個(gè)文件。文件指針將會(huì)放在文件的開頭。

  • rb+:以二進(jìn)制讀寫方式打開一個(gè)文件。文件指針將會(huì)放在文件的開頭。

  • w:以寫入方式打開一個(gè)文件。如果該文件已存在,則將其覆蓋。如果該文件不存在,則創(chuàng)建新文件。

  • wb:以二進(jìn)制寫入方式打開一個(gè)文件。如果該文件已存在,則將其覆蓋。如果該文件不存在,則創(chuàng)建新文件。

  • w+:以讀寫方式打開一個(gè)文件。如果該文件已存在,則將其覆蓋。如果該文件不存在,則創(chuàng)建新文件。

  • wb+:以二進(jìn)制讀寫格式打開一個(gè)文件。如果該文件已存在,則將其覆蓋。如果該文件不存在,則創(chuàng)建新文件。

  • a:以追加方式打開一個(gè)文件。如果該文件已存在,文件指針將會(huì)放在文件結(jié)尾。也就是說,新的內(nèi)容將會(huì)被寫入到已有內(nèi)容之后。如果該文件不存在,則創(chuàng)建新文件來寫入。

  • ab:以二進(jìn)制追加方式打開一個(gè)文件。如果該文件已存在,則文件指針將會(huì)放在文件結(jié)尾。也就是說,新的內(nèi)容將會(huì)被寫入到已有內(nèi)容之后。如果該文件不存在,則創(chuàng)建新文件來寫入。

  • a+:以讀寫方式打開一個(gè)文件。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。文件打開時(shí)會(huì)是追加模式。如果該文件不存在,則創(chuàng)建新文件來讀寫。

  • ab+:以二進(jìn)制追加方式打開一個(gè)文件。如果該文件已存在,則文件指針將會(huì)放在文件結(jié)尾。如果該文件不存在,則創(chuàng)建新文件用于讀寫。

4. 簡化寫法

另外,文件寫入還有一種簡寫方法,那就是使用 with as 語法。在 with 控制塊結(jié)束時(shí),文件會(huì)自動(dòng)關(guān)閉,所以就不需要再調(diào)用 close 方法了。這種保存方式可以簡寫如下:

with open('explore.txt', 'a', encoding='utf-8') as file:file.write('\n'.join([question, author, answer]))file.write('\n' + '=' * 50 + '\n')

如果想保存時(shí)將原文清空,那么可以將第二個(gè)參數(shù)改寫為 w,代碼如下:

with open('explore.txt', 'w', encoding='utf-8') as file:file.write('\n'.join([question, author, answer]))file.write('\n' + '=' * 50 + '\n')

上面便是利用 Python 將結(jié)果保存為 TXT 文件的方法,這種方法簡單易用,操作高效,是一種最基本的保存數(shù)據(jù)的方法。

JSON 文件存儲(chǔ)

JSON,全稱為 JavaScript Object Notation, 也就是 JavaScript 對(duì)象標(biāo)記,它通過對(duì)象和數(shù)組的組合來表示數(shù)據(jù),構(gòu)造簡潔但是結(jié)構(gòu)化程度非常高,是一種輕量級(jí)的數(shù)據(jù)交換格式。本節(jié)中,我們就來了解如何利用 Python 保存數(shù)據(jù)到 JSON 文件。

1. 對(duì)象和數(shù)組

在 JavaScript 語言中,一切都是對(duì)象。因此,任何支持的類型都可以通過 JSON 來表示,例如字符串、數(shù)字、對(duì)象、數(shù)組等,但是對(duì)象和數(shù)組是比較特殊且常用的兩種類型,下面簡要介紹一下它們。

對(duì)象:它在 JavaScript 中是使用花括號(hào) {} 包裹起來的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為 {key1:value1, key2:value2, ...} 的鍵值對(duì)結(jié)構(gòu)。在面向?qū)ο蟮恼Z言中,key 為對(duì)象的屬性,value 為對(duì)應(yīng)的值。鍵名可以使用整數(shù)和字符串來表示。值的類型可以是任意類型。

數(shù)組:數(shù)組在 JavaScript 中是方括號(hào) [] 包裹起來的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為 ["java", "javascript", "vb", ...] 的索引結(jié)構(gòu)。在 JavaScript 中,數(shù)組是一種比較特殊的數(shù)據(jù)類型,它也可以像對(duì)象那樣使用鍵值對(duì),但還是索引用得多。同樣,值的類型可以是任意類型。

所以,一個(gè) JSON 對(duì)象可以寫為如下形式:

[{"name": "Bob","gender": "male","birthday": "1992-10-18"
}, {"name": "Selina","gender": "female","birthday": "1995-10-18"
}]

由中括號(hào)包圍的就相當(dāng)于列表類型,列表中的每個(gè)元素可以是任意類型,這個(gè)示例中它是字典類型,由大括號(hào)包圍。

JSON 可以由以上兩種形式自由組合而成,可以無限次嵌套,結(jié)構(gòu)清晰,是數(shù)據(jù)交換的極佳方式。

2. 讀取 JSON

Python 為我們提供了簡單易用的 JSON 庫來實(shí)現(xiàn) JSON 文件的讀寫操作,我們可以調(diào)用 JSON 庫的 loads 方法將 JSON 文本字符串轉(zhuǎn)為 JSON 對(duì)象,可以通過 dumps() 方法將 JSON 對(duì)象轉(zhuǎn)為文本字符串。

例如,這里有一段 JSON 形式的字符串,它是 str 類型,我們用 Python 將其轉(zhuǎn)換為可操作的數(shù)據(jù)結(jié)構(gòu),如列表或字典:

import json
?
str = '''
[{"name": "Bob","gender": "male","birthday": "1992-10-18"
}, {"name": "Selina","gender": "female","birthday": "1995-10-18"
}]
'''
print(type(str))
data = json.loads(str)
print(data)
print(type(data))

運(yùn)行結(jié)果如下:

<class'str'>
[{'name': 'Bob', 'gender': 'male', 'birthday': '1992-10-18'}, {'name': 'Selina', 'gender': 'female', 'birthday': '1995-10-18'}]
<class 'list'>

這里使用 loads 方法將字符串轉(zhuǎn)為 JSON 對(duì)象。由于最外層是中括號(hào),所以最終的類型是列表類型。

這樣一來,我們就可以用索引來獲取對(duì)應(yīng)的內(nèi)容了。例如,如果想取第一個(gè)元素里的 name 屬性,就可以使用如下方式:

data[0]['name']
data[0].get('name')

得到的結(jié)果都是:

Bob

通過中括號(hào)加 0 索引,可以得到第一個(gè)字典元素,然后再調(diào)用其鍵名即可得到相應(yīng)的鍵值。獲取鍵值時(shí)有兩種方式,一種是中括號(hào)加鍵名,另一種是通過 get 方法傳入鍵名。這里推薦使用 get 方法,這樣如果鍵名不存在,則不會(huì)報(bào)錯(cuò),會(huì)返回 None。另外,get 方法還可以傳入第二個(gè)參數(shù)(即默認(rèn)值),示例如下:

data[0].get('age')
data[0].get('age', 25)

運(yùn)行結(jié)果如下:

None
25

這里我們嘗試獲取年齡 age,其實(shí)在原字典中該鍵名不存在,此時(shí)默認(rèn)會(huì)返回 None。如果傳入第二個(gè)參數(shù)(即默認(rèn)值),那么在不存在的情況下返回該默認(rèn)值。

值得注意的是,JSON 的數(shù)據(jù)需要用雙引號(hào)來包圍,不能使用單引號(hào)。例如,若使用如下形式表示,則會(huì)出現(xiàn)錯(cuò)誤:

import json
?
str = '''
[{'name': 'Bob','gender': 'male','birthday': '1992-10-18'
}]
'''
data = json.loads(str)

運(yùn)行結(jié)果如下:

json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 3 column 5 (char 8)

這里會(huì)出現(xiàn) JSON 解析錯(cuò)誤的提示。這是因?yàn)檫@里數(shù)據(jù)用單引號(hào)來包圍,請(qǐng)千萬注意 JSON 字符串的表示需要用雙引號(hào),否則 loads 方法會(huì)解析失敗。

如果從 JSON 文本中讀取內(nèi)容,例如這里有一個(gè) data.json 文本文件,其內(nèi)容是剛才定義的 JSON 字符串,我們可以先將文本文件內(nèi)容讀出,然后再利用 loads 方法轉(zhuǎn)化:

import json
?
with open('data.json', 'r') as file:str = file.read()data = json.loads(str)print(data)

運(yùn)行結(jié)果如下:

[{'name': 'Bob', 'gender': 'male', 'birthday': '1992-10-18'}, {'name': 'Selina', 'gender': 'female', 'birthday': '1995-10-18'}]
3. 輸出 JSON

另外,我們還可以調(diào)用 dumps 方法將 JSON 對(duì)象轉(zhuǎn)化為字符串。例如,將上例中的列表重新寫入文本:

import json
?
data = [{'name': 'Bob','gender': 'male','birthday': '1992-10-18'
}]
with open('data.json', 'w') as file:file.write(json.dumps(data))

利用 dumps 方法,我們可以將 JSON 對(duì)象轉(zhuǎn)為字符串,然后再調(diào)用文件的 write 方法寫入文本,結(jié)果如圖所示。

另外,如果想保存 JSON 的格式,可以再加一個(gè)參數(shù) indent,代表縮進(jìn)字符個(gè)數(shù)。示例如下:

with open('data.json', 'w') as file:file.write(json.dumps(data, indent=2))

此時(shí)寫入結(jié)果如圖所示。

這樣得到的內(nèi)容會(huì)自動(dòng)帶縮進(jìn),格式會(huì)更加清晰。

另外,如果 JSON 中包含中文字符,會(huì)怎么樣呢?例如,我們將之前的 JSON 的部分值改為中文,再用之前的方法寫入到文本:

import json
?
data = [{'name': ' 王偉 ','gender': ' 男 ','birthday': '1992-10-18'
}]
with open('data.json', 'w') as file:file.write(json.dumps(data, indent=2))

寫入結(jié)果如圖所示。

可以看到,中文字符都變成了 Unicode 字符,這并不是我們想要的結(jié)果。

為了輸出中文,還需要指定參數(shù) ensure_ascii 為 False,另外還要規(guī)定文件輸出的編碼:

with open('data.json', 'w', encoding='utf-8') as file:file.write(json.dumps(data, indent=2, ensure_ascii=False))

寫入結(jié)果如圖所示。

可以發(fā)現(xiàn),這樣就可以輸出 JSON 為中文了。

本節(jié)中,我們了解了用 Python 進(jìn)行 JSON 文件讀寫的方法,后面做數(shù)據(jù)解析時(shí)經(jīng)常會(huì)用到,建議熟練掌握。

CSV 文件存儲(chǔ)

CSV,全稱為 Comma-Separated Values,中文可以叫作逗號(hào)分隔值或字符分隔值,其文件以純文本形式存儲(chǔ)表格數(shù)據(jù)。該文件是一個(gè)字符序列,可以由任意數(shù)目的記錄組成,記錄間以某種換行符分隔。每條記錄由字段組成,字段間的分隔符是其他字符或字符串,最常見的是逗號(hào)或制表符。不過所有記錄都有完全相同的字段序列,相當(dāng)于一個(gè)結(jié)構(gòu)化表的純文本形式。它比 Excel 文件更加簡潔,XLS 文本是電子表格,它包含了文本、數(shù)值、公式和格式等內(nèi)容,而 CSV 中不包含這些內(nèi)容,就是特定字符分隔的純文本,結(jié)構(gòu)簡單清晰。所以,有時(shí)候用 CSV 來保存數(shù)據(jù)是比較方便的。本節(jié)中,我們來講解 Python 讀取和寫入 CSV 文件的過程。

1. 寫入

這里先看一個(gè)最簡單的例子:

import csv
?
with open('data.csv', 'w') as csvfile:writer = csv.writer(csvfile)writer.writerow(['id', 'name', 'age'])writer.writerow(['10001', 'Mike', 20])writer.writerow(['10002', 'Bob', 22])writer.writerow(['10003', 'Jordan', 21])

首先,打開 data.csv 文件,然后指定打開的模式為 w(即寫入),獲得文件句柄,隨后調(diào)用 csv 庫的 writer 方法初始化寫入對(duì)象,傳入該句柄,然后調(diào)用 writerow 方法傳入每行的數(shù)據(jù)即可完成寫入。

運(yùn)行結(jié)束后,會(huì)生成一個(gè)名為 data.csv 的文件,此時(shí)數(shù)據(jù)就成功寫入了。直接以文本形式打開的話,其內(nèi)容如下:

id,name,age
10001,Mike,20
10002,Bob,22
10003,Jordan,21

可以看到,寫入的文本默認(rèn)以逗號(hào)分隔,調(diào)用一次 writerow 方法即可寫入一行數(shù)據(jù)。用 Excel 打開的結(jié)果如圖所示。

如果想修改列與列之間的分隔符,可以傳入 delimiter 參數(shù),其代碼如下:

import csv
?
with open('data.csv', 'w') as csvfile:writer = csv.writer(csvfile, delimiter=' ')writer.writerow(['id', 'name', 'age'])writer.writerow(['10001', 'Mike', 20])writer.writerow(['10002', 'Bob', 22])writer.writerow(['10003', 'Jordan', 21])

這里在初始化寫入對(duì)象時(shí)傳入 delimiter 為空格,此時(shí)輸出結(jié)果的每一列就是以空格分隔了,內(nèi)容如下:

id name age
10001 Mike 20
10002 Bob 22
10003 Jordan 21

另外,我們也可以調(diào)用 writerows 方法同時(shí)寫入多行,此時(shí)參數(shù)就需要為二維列表,例如:

import csv
?
with open('data.csv', 'w') as csvfile:writer = csv.writer(csvfile)writer.writerow(['id', 'name', 'age'])writer.writerows([['10001', 'Mike', 20], ['10002', 'Bob', 22], ['10003', 'Jordan', 21]])

輸出效果是相同的,內(nèi)容如下:

id,name,age
10001,Mike,20
10002,Bob,22
10003,Jordan,21

但是一般情況下,爬蟲爬取的都是結(jié)構(gòu)化數(shù)據(jù),我們一般會(huì)用字典來表示。在 csv 庫中也提供了字典的寫入方式,示例如下:

import csv
?
with open('data.csv', 'w') as csvfile:fieldnames = ['id', 'name', 'age']writer = csv.DictWriter(csvfile, fieldnames=fieldnames)writer.writeheader()writer.writerow({'id': '10001', 'name': 'Mike', 'age': 20})writer.writerow({'id': '10002', 'name': 'Bob', 'age': 22})writer.writerow({'id': '10003', 'name': 'Jordan', 'age': 21})

這里先定義 3 個(gè)字段,用 fieldnames 表示,然后將其傳給 DictWriter 來初始化一個(gè)字典寫入對(duì)象,接著可以調(diào)用 writeheader 方法先寫入頭信息,然后再調(diào)用 writerow 方法傳入相應(yīng)字典即可。最終寫入的結(jié)果是完全相同的,內(nèi)容如下:

id,name,age ?
10001,Mike,20 ?
10002,Bob,22 ?
10003,Jordan,21

這樣就可以完成字典到 CSV 文件的寫入了。

另外,如果想追加寫入的話,可以修改文件的打開模式,即將 open 函數(shù)的第二個(gè)參數(shù)改成 a,代碼如下:

import csv ?
?
with open('data.csv', 'a') as csvfile: ?fieldnames = ['id', 'name', 'age'] ?writer = csv.DictWriter(csvfile, fieldnames=fieldnames) ?writer.writerow({'id': '10004', 'name': 'Durant', 'age': 22})

這樣在上面的基礎(chǔ)上再執(zhí)行這段代碼,文件內(nèi)容便會(huì)變成:

id,name,age ?
10001,Mike,20 ?
10002,Bob,22 ?
10003,Jordan,21 ?
10004,Durant,22

可見,數(shù)據(jù)被追加寫入到文件中。

如果要寫入中文內(nèi)容的話,可能會(huì)遇到字符編碼的問題,此時(shí)需要給 open 參數(shù)指定編碼格式。比如,這里再寫入一行包含中文的數(shù)據(jù),代碼需要改寫如下:

import csv
?
with open('data.csv', 'a') as csvfile:fieldnames = ['id', 'name', 'age']writer = csv.DictWriter(csvfile, fieldnames=fieldnames)writer.writerow({'id': '10004', 'name': 'Durant', 'age': 22})

這里需要給 open 函數(shù)指定編碼,否則可能發(fā)生編碼錯(cuò)誤。

另外,如果接觸過 pandas 等庫的話,可以調(diào)用 DataFrame 對(duì)象的 to_csv 方法來將數(shù)據(jù)寫入 CSV 文件中。

2. 讀取

我們同樣可以使用 csv 庫來讀取 CSV 文件。例如,將剛才寫入的文件內(nèi)容讀取出來,相關(guān)代碼如下:

import csv ?
?
with open('data.csv', 'r', encoding='utf-8') as csvfile: ?reader = csv.reader(csvfile) ?for row in reader: ?print(row)

運(yùn)行結(jié)果如下:

['id', 'name', 'age'] ?
['10001', 'Mike', '20'] ?
['10002', 'Bob', '22'] ?
['10003', 'Jordan', '21'] ?
['10004', 'Durant', '22'] ?
['10005', ' 王偉 ', '22']

這里我們構(gòu)造的是 Reader 對(duì)象,通過遍歷輸出了每行的內(nèi)容,每一行都是一個(gè)列表形式。注意,如果 CSV 文件中包含中文的話,還需要指定文件編碼。

另外,如果接觸過 pandas 的話,可以利用 read_csv 方法將數(shù)據(jù)從 CSV 中讀取出來,例如:

import pandas as pd ?
?
df = pd.read_csv('data.csv') ?
print(df)

運(yùn)行結(jié)果如下:

 ? ?  id ?  name  age ?
0  10001 ?  Mike ? 20 ?
1  10002 ? ? Bob ? 22 ?
2  10003  Jordan ? 21 ?
3  10004  Durant ? 22 ?
4  10005 ?  王偉 ? 22

在做數(shù)據(jù)分析的時(shí)候,此種方法用得比較多,也是一種比較方便地讀取 CSV 文件的方法。

http://www.risenshineclean.com/news/6419.html

相關(guān)文章:

  • 深圳學(xué)校網(wǎng)站建設(shè)報(bào)價(jià)北京疫情最新新聞
  • 政府網(wǎng)站規(guī)范化建設(shè)廣告關(guān)鍵詞有哪些
  • 攜程做旅游的網(wǎng)站商城系統(tǒng)開發(fā)
  • 網(wǎng)站建設(shè)服務(wù)流程優(yōu)化網(wǎng)站結(jié)構(gòu)一般包括
  • 做礦業(yè)的鄭州公司網(wǎng)站網(wǎng)站流量排名查詢工具
  • 做藝人資料卡的網(wǎng)站廣告策劃書
  • 關(guān)鍵詞排名優(yōu)化網(wǎng)站建設(shè)公司哪家好網(wǎng)站外鏈發(fā)布平臺(tái)
  • 做美女圖片網(wǎng)站犯法嗎廣告聯(lián)盟大全
  • 臨海大經(jīng)建設(shè)集團(tuán)網(wǎng)站網(wǎng)站怎么做
  • wordpress下載seo含義
  • 杭州下沙做網(wǎng)站的論壇網(wǎng)站建設(shè)全包
  • 網(wǎng)站開發(fā)合同范本下載google網(wǎng)頁版登錄入口
  • 企業(yè)建站公司電話百度關(guān)鍵詞快排
  • 用ps做網(wǎng)站頁面seo查詢 站長工具
  • 大型網(wǎng)絡(luò)游戲排行榜2021前十名湖南專業(yè)關(guān)鍵詞優(yōu)化服務(wù)水平
  • 網(wǎng)站ui設(shè)計(jì)包括哪些原則谷歌seo 外貿(mào)建站
  • 怎么自建導(dǎo)購網(wǎng)站做淘客公司seo排名優(yōu)化
  • 網(wǎng)站開發(fā)語言 微信接口百度快照優(yōu)化培訓(xùn)班
  • 河北省建設(shè)執(zhí)業(yè)資格中心網(wǎng)站網(wǎng)絡(luò)營銷推廣技巧
  • 西充縣住房和城鄉(xiāng)規(guī)劃建設(shè)局網(wǎng)站google網(wǎng)站增加關(guān)鍵詞
  • 哪些網(wǎng)站是做b2b的網(wǎng)站維護(hù)一年一般多少錢?
  • 網(wǎng)站建設(shè)容易嗎seo自媒體培訓(xùn)
  • 連云港做網(wǎng)站最好惠州網(wǎng)站制作推廣
  • 專做海島游的網(wǎng)站如何交換友情鏈接
  • 網(wǎng)站建設(shè)設(shè)計(jì)解決方案網(wǎng)推拉新app推廣接單平臺(tái)
  • 電腦版qq在線登錄網(wǎng)頁入口百度地圖關(guān)鍵詞排名優(yōu)化
  • 南昌自助建站模板今天上海最新新聞事件
  • 網(wǎng)站 建設(shè) 成品小程序開發(fā)平臺(tái)官網(wǎng)
  • hbuilder做網(wǎng)站頁面背景色鄭州seo公司哪家好
  • 58同城煙臺(tái)網(wǎng)站建設(shè)肇慶網(wǎng)站推廣排名