bs4>>8684公交面向过程爬取

import json

import re

import urllib.request

import urllib.parse

from bs4import BeautifulSoup

def main():

url ='http://js.8684.cn/citys/city_boxInf.min.js'

    #按照拼接获取城市

    request = get_city_request(url)

#获取响应的对象

    response = get_city_response(request)

#获得第一层数据城市

def get_city_request(url):

headers = {

'User - Agent':'Mozilla / 5.0(Windows NT 6.1;WOW64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 67.0.3396.99Safari / 537.36'

    }

request = urllib.request.Request(url=url,headers=headers)

return request

#获得响应的对象

def get_city_response(request):

response = urllib.request.urlopen(request)

data = response.read().decode("utf8").split("=")

res = []

#获取汉字版的数字

    for iin range(len(data)):

res.append(data[2])

html = res[0].split(",")

for iin html:

# print(i)

#通过正则匹配拼接

        a = re.findall(r'(\w+):',i)

print('正在爬取%s' %a)

#创建每个省的文件夹

        fp =open(a[0]+'.txt','w',encoding="utf8")

#拼接url

        url ='http://'+a[0]+'.8684.cn'

        #调用请求对象函数

        request = get_city_request(url)

#调用第二层请求对象函数

        response = get_response(request)

data = get_data(response,url)

print(msg_list)

for iin msg_list:

print(type(i))

fp.write(str(i))

print("%s爬取结束" %a)

#调用第二层响应的对象

def get_response(request):

try:

response = urllib.request.urlopen(request)

return response

except:

response=''

        return response

#获取二层数据

def get_data(response,url):

try:

#实例化一个soup

        data = response.read().decode("utf8")

soup = BeautifulSoup(data,'lxml')

#获取以数字开头的公交车信息

        html1 = soup.select('.bus_kt_r1 > a')

html2 = soup.select('.bus_kt_r2 > a')

#将两个获取的列表相加

        html = html1+html2

#遍历循环HTML文件里面的数据

        for iin html:

#拼接路径

            print(url)

url1 = url + i['href']

print('url',url1)

#调用获取请求参数的函数

            request  = get_city_request(url1)

#调用第二层获取响应数据的函数

            response = get_response(request)

#调用第三层的数据

            data = get_data_san(response,url)

except:

print("过去")

data=""

#获取三层数据

def get_data_san(response,url):

global  msg_list

msg_list = []

data = response.read().decode("utf8")

#实例化一个soup

    soup = BeautifulSoup(data,'lxml')

html = soup.select("#con_site_1 > a")

for  iin html:

#先截取url,在拼接路径

        url = url.split("cn")[0] +'cn'  + i['href']

# print(url)

#调用获取请求对象

        request = get_city_request(url)

#调用第二层的响应对象

        response = get_response(request)

#调用第四层数据

        text = get_data_si(response)

msg_list.append(text)

print('msg',msg_list)

#获取第四层数据

def get_data_si(res):

data = res.read().decode("utf8")

#实例化一个soup

    soup = BeautifulSoup(data,'lxml')

#获取具体的信息

#获得公交名字

    bus_name = soup.select(".bus_i_t1 > h1")[0].text

#获得公交运行时间

    bus_run_time = soup.select('.bus_i_t4')[0].text

#获得公交的票价

    bus_fares = soup.select('.bus_i_t4')[1].text.split(" ")[-1]

#获得公交的运行公司

    bus_company = soup.select('.bus_i_t4')[2].text

#获得更新时间

    bus_msg_update_time  = soup.select('.bus_i_t4')[-1].text.split(":")[-1]

#获取正向行驶的路线

    up_run = soup.select(".bus_line_site")[0]

up = up_run.select('div > div > a')

up_temp = []

for  iin up:

up_temp.append(i.text)

# print(up_temp)

    try:

#获取反向行驶路线

        down_run = soup.select(".bus_line_site")[1]

down = down_run.select('div > div > a')

down_temp = []

for iin down:

down_temp.append(i.text)

# print(down_temp)

    except:

down_temp = []

items = {

'公交名字':bus_name,

'运行时间':bus_run_time,

'票价':bus_fares,

'公交运行公司':bus_company,

'路线更新时间':bus_msg_update_time,

'正向行驶路线':up_temp,

'反向行驶路线':down_temp

}

# print(items)

    return items

if __name__ =='__main__':

main()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,656评论 18 139
  • 电商发展到今天,各种流程都已非常成熟。而在整个电商所有流程中,订单流程是最重要的一个环节。恰好前段时间在做礼品兑换...
    2c5994723157阅读 7,187评论 0 8
  • #白马声慢,我自手书# 与你的相遇,没有什么微风轻扬,我长发飘飘,你温润如玉,一眼终身,只有安静的空气、尴尬的聊天...
    喜欢自己的丹丹阅读 183评论 0 0
  • (原创首发,不得转载) 世间本无尺,尺亦无短长, 本来无...
    财道阅读 353评论 7 21
  • 一、什么是 History 1. 概述 history 是历史记录管理。点击 a 标签跳转或者点击浏览器后退按钮,...
    dkvirus阅读 9,324评论 4 5