使用BeautifulSoup解析html
soup = BeautifulSoup(data, 'html.parser')
tables = soup.find_all('table')
for table in tables:
trs = table.find_all('tr')
for tr in trs:
tds = tr.find_all('td')
for td in tds:
link = td.find('a')
if link:
reg = re.compile(r'[\u2E80-\u9FFF]+')
matchObj = reg.search(str(link))
if matchObj:
print(matchObj.group())
輸出的時(shí)候開始會(huì)輸出一段數(shù)據(jù),但后面會(huì)重復(fù)最后一段數(shù)據(jù)后報(bào)錯(cuò)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import urllib.request
from bs4 import BeautifulSoup
import re
import string
from pypinyin import pinyin, Style
from model import cities
import json
import codecs
countryUrl = "https://baike.baidu.com/item/%E5%8E%BF/7258656" # 縣
cityUrl = "https://zh.wikipedia.org/wiki/%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD%E5%9F%8E%E5%B8%82%E5%88%97%E8%A1%A8" # 市
countryRequest = urllib.request.Request(countryUrl)
cityRequest = urllib.request.Request(cityUrl)
countryResponse = urllib.request.urlopen(countryRequest)
cityResponse = urllib.request.urlopen(cityRequest)
countryData = countryResponse.read()
cityData = cityResponse.read()
data = countryData.decode('utf-8')
countrySoup = BeautifulSoup(countryData, 'html.parser')
citySoup = BeautifulSoup(cityData, 'html.parser')
tables = countrySoup.find_all('table')
lis = citySoup.find_all('li', class_="")
city = cities([])
for word in string.ascii_uppercase:
city.addCharacter(word)
for table in tables:
trs = table.find_all('tr')
for tr in trs:
tds = tr.find_all('td')
for td in tds:
link = td.find('a')
if link:
reg = re.compile(r'[\u2E80-\u9FFF]+')
matchObj = reg.search(str(link))
if matchObj:
matchStr = matchObj.group()
firstP = pinyin(matchStr, style=Style.FIRST_LETTER)
p = firstP[0][0]
city.addCountry(str(p).upper(), {'name': matchStr})
for li in lis:
liNext = str(li.next)
city.addCity('B', {'name': '北京市'})
city.addCity('T', {'name': '天津市'})
city.addCity('S', {'name': '上海市'})
city.addCity('C', {'name': '重慶市'})
if liNext != '副省級(jí)市:' and liNext != '地級(jí)市:' and liNext != '縣級(jí)市:':
continue
links = li.find_all('a')
for link in links:
if link:
reg = re.compile(r'[\u2E80-\u9FFF]+')
matchObj = reg.search(str(link))
if matchObj:
matchStr = matchObj.group()
firstP = pinyin(matchStr, style=Style.FIRST_LETTER)
p = firstP[0][0]
city.addCity(str(p).upper(), {'name': matchStr})
with codecs.open('test.js', 'w', 'utf-8') as f:
city.sortByValue()
json = json.dumps(city.arr, ensure_ascii=False)
f.write(json)
city.js
class cities(object):
def __init__(self, arr):
self.arr = arr
def addCountry(self, name, city):
for obj in self.arr:
if obj['name'] == name:
if city in obj['cities']:
continue
if '縣' in city['name']:
obj['cities'].append(city)
def addCharacter(self, name):
obj = {'name': '', 'cities': []}
obj['name'] = name
self.arr.append(obj)
def addCity(self, name, city):
for obj in self.arr:
if obj['name'] == name:
if city in obj['cities']:
continue
obj['cities'].append(city)
def sortByValue(self):
for obj in self.arr:
obj['cities'].sort(key=lambda obj: obj['name'])
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國成功上市,融資1
北大課工場(chǎng)是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。