資源簡介
IDE使用的是VS2015
自己學(xué)習(xí)了一段時(shí)間Python的基礎(chǔ)知識后,編寫的從網(wǎng)上爬取的世界港口數(shù)據(jù),并存儲(chǔ)到SQL Server數(shù)據(jù)庫中。如果在使用的時(shí)候發(fā)現(xiàn)引用庫無法識別,先將這些庫注冊一下,注冊方法自行百度,比較簡單

代碼片段和文件信息
import?requests
from?bs4?import?BeautifulSoup
import?re
import?pymssql
server?=?“xxxx“
user?=?“xx“
password?=?“xxx“
database?=?“xx“
conn?=?pymssql.connect(server?user?password?database)
cursor?=?conn.cursor()
#定義一個(gè)變量url,為需要爬取數(shù)據(jù)我網(wǎng)頁網(wǎng)址
url?=?‘http://gangkou.00cha.net/‘
#獲取這個(gè)網(wǎng)頁的源代碼,存放在req中,{}中為不同瀏覽器的不同User-Agent屬性,針對不同瀏覽器可以自行百度
req?=?requests.get(url{‘User-Agent‘:?‘Mozilla/5.0?(Windows?NT?6.1;?Win64;?x64)?AppleWebKit/537.36?(KHTML?like?Gecko)?Chrome/76.0.3809.100?Safari/537.36‘})
req.encoding?=?‘gb2312‘
#生成一個(gè)Beautifulsoup對象,用以后邊的查找工作
soup?=?BeautifulSoup(req.text‘lxml‘)
#找到所有a標(biāo)簽中的內(nèi)容并存放在xml這樣一個(gè)類似于數(shù)組隊(duì)列的對象中
xml?=?soup.find_all(‘a(chǎn)‘)
gj=[]
#查找國家港口的URL
for?k?in?xml:
????if?‘gj_‘?in?k[‘href‘]:
????????gj.append(k[‘href‘])
for?l?in?gj:
????????urlgj=‘http://gangkou.00cha.net/‘+l
????????#獲取這個(gè)網(wǎng)頁的源代碼,存放在req中,{}中為不同瀏覽器的不同User-Agent屬性,針對不同瀏覽器可以自行百度
????????reqgj?=?requests.get(urlgj{‘User-Agent‘:?‘Mozilla/5.0?(Windows?NT?6.1;?Win64;?x64)?AppleWebKit/537.36?(KHTML?like?Gecko)?Chrome/76.0.3809.100?Safari/537.36‘})
????????reqgj.encoding?=?‘gb2312‘
????????#生成一個(gè)Beautifulsoup對象,用以后邊的查找工作
????????soupgj?=?BeautifulSoup(reqgj.text‘lxml‘)
????????#找到所有a標(biāo)簽中的內(nèi)容并存放在xml這樣一個(gè)類似于數(shù)組隊(duì)列的對象中
????????xmlgj?=?soupgj.find_all(‘a(chǎn)‘)
????????#查找國家港口的URL
????????for?kgj?in?xmlgj:
????????????if?‘gk_‘?in?kgj[‘href‘]:
????????????????urlgk=‘http://gangkou.00cha.net/‘+kgj[‘href‘]
????????????????reqgk?=?requests.get(urlgk{‘User-Agent‘:?‘Mozilla/5.0?(Windows?NT?6.1;?Win64;?x64)?AppleWebKit/537.36?(KHTML?like?Gecko)?Chrome/76.0.3809.100?Safari/537.36‘})
????????????????reqgk.encoding?=?‘gb2312‘
????????????????soupgk?=?BeautifulSoup(reqgk.text‘lxml‘)
????????????????#keylatlon1=soupgk.find(key1)
????????????????trarry=[]
????????????????for?tr?in?soupgk.find_all(‘tr‘):
????????????????????tdarry=[]
????????????????????for?td?in?tr.find_all(‘td‘):
????????????????????????text?=?td.text.replace(‘\u3000‘‘‘).replace(‘ ‘‘?‘)
????????????????????????tdarry.append(text)
????????????????????trarry.append(tdarry)
????????????????#tab2=[]
????????????????#for?tab?in?trarry:
????????????????#????ctab2=[]
????????????????#????for?ctab?in?tab:
????????????????#????????ctab2.append(ctab.replace(‘\u3000‘‘‘))
????????????????#????tab2.append(ctab2)
????????????????keylonlat1=‘LatLng‘#設(shè)置經(jīng)緯度關(guān)鍵字1
????????????????keylonlat2=“);“#設(shè)置經(jīng)緯度關(guān)鍵字2
????????????????plonlata=reqgk.text.find(keylonlat1)#找出關(guān)鍵字1的位置
????????????????plonlatt=reqgk.text.find(keylonlat2plonlata)#找出關(guān)鍵字2的位置(從字1后面開始查找)
????????????????lonlat=reqgk.text[plonlata:plonlatt+1]#得到關(guān)鍵字1與關(guān)鍵字2之間的內(nèi)容(即想要的數(shù)據(jù))
????????????????lonlat=?re.findall(r‘[(](.*?)[)]‘?lonlat)
????????????????introarry=[]
????????????????for?introduce?in?soupgk.find_all(‘div‘?class_=‘bei?lh‘):
????????????????????if?‘港口介紹‘?in?introduce.text:
????????????????????????introarry.append([introduce.text.replace(?‘\ufffd‘‘‘).replace(?‘\xe6‘‘‘).replace(‘ ‘‘?‘)])
????????????????try:
???????
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
????..A..H.?????31232??2019-08-16?12:12??port\.vs\port\v14\.suo
?????文件???????5859??2019-08-19?13:38??port\port\port.py
?????文件???????1897??2019-08-15?13:02??port\port\port.pyproj
?????文件????????815??2019-08-15?13:02??port\port.sln
?????目錄??????????0??2019-08-15?13:02??port\.vs\port\v14
?????目錄??????????0??2019-08-15?13:02??port\.vs\port
????...D.H.?????????0??2019-08-15?13:02??port\.vs
?????目錄??????????0??2019-08-19?13:38??port\port
?????目錄??????????0??2019-08-15?13:02??port
-----------?---------??----------?-----??----
????????????????39803????????????????????9
評論
共有 條評論