• 大小: 7KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-06-06
  • 语言: Python
  • 标签: 爬虫  港口信息  

资源简介

IDE使用的是VS2015 自己学习了一段时间Python的基础知识后,编写的从网上爬取的世界港口数据,并存储到SQL Server数据库中。如果在使用的时候发现引用库无法识别,先将这些库注册一下,注册方法自行百度,比较简单

资源截图

代码片段和文件信息

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()


#定义一个变量url,为需要爬取数据我网页网址
url = ‘http://gangkou.00cha.net/‘

#获取这个网页的源代码,存放在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‘
#生成一个Beautifulsoup对象,用以后边的查找工作
soup = BeautifulSoup(req.text‘lxml‘)

#找到所有a标签中的内容并存放在xml这样一个类似于数组队列的对象中
xml = soup.find_all(‘a‘)
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
        #获取这个网页的源代码,存放在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‘
        #生成一个Beautifulsoup对象,用以后边的查找工作
        soupgj = BeautifulSoup(reqgj.text‘lxml‘)
        #找到所有a标签中的内容并存放在xml这样一个类似于数组队列的对象中
        xmlgj = soupgj.find_all(‘a‘)
        #查找国家港口的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‘#设置经纬度关键字1
                keylonlat2=“);“#设置经纬度关键字2
                plonlata=reqgk.text.find(keylonlat1)#找出关键字1的位置
                plonlatt=reqgk.text.find(keylonlat2plonlata)#找出关键字2的位置(从字1后面开始查找)
                lonlat=reqgk.text[plonlata:plonlatt+1]#得到关键字1与关键字2之间的内容(即想要的数据)
                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:
       

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    ..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


评论

共有 条评论