美文网首页
城市五级连爬

城市五级连爬

作者: 楚糖的糖 | 来源:发表于2019-05-20 14:12 被阅读0次
#!/usr/bin/python
# -- coding: utf-8 --
import re
from lxml import etree

import requests

user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'
headers = {'User-Agent': user_agent}


def GET_URL():  # 获取省
    url = "http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2018/index.html"
    respon = requests.get(url, headers=headers)  # 获得响应
    htmlText = respon.content.decode("gbk")
    s = etree.HTML(htmlText)  # 将源码转化为能被XPath匹配的格式
    html_data = s.xpath("//table[@class='provincetable']")  # 提取相同的前缀
    for i in html_data:
        # Provinc_url=i.xpath("//tr//@href")[:-1]   #暂时注释
        Provinc_name = i.xpath("//tr//a/text()")[:-1]

        Provinc_url = i.xpath("//tr//@href")[2]  # ===========
        # print(Provinc_name)
        # print(Provinc_url)
        Get_City(Provinc_url)


def Get_City(Provinc_url):  # 获取市
    province_url = "http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2018/" + Provinc_url
    # print(province_url)
    respon = requests.get(province_url, headers=headers)  # 获得响应
    htmlText = respon.content.decode("gbk")
    s = etree.HTML(htmlText)  # 将源码转化为能被XPath匹配的格式
    html_data = s.xpath("//table/tbody/tr[2]")[0]  # 提取相同的前缀
    for i in html_data:
        city_code=i.xpath("//td[1]/a//text()")            #130100000000
        city_name=i.xpath("//td[2]/a//text()")            #石家庄市,唐山市,秦皇岛市
        # city_URL = i.xpath("//td[2]//@href")               #13/1301.html,13/1302.html,13/1303.html     #暂时注释
        city_URL = i.xpath("//td[2]//@href")[1]               #13/1301.html,13/1302.html,13/1303.html     #=================
        city_url_code=city_URL[:2]                #在进行街道的连接的拼接的时候会用到,13,14,15
        # print("=====================================================")
        Get_qu(city_URL,city_url_code)
#
#
def Get_qu(city_URL,city_url_code):
    qu_url = "http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2018/" + city_URL
    # print(qu_url)
    respon = requests.get(qu_url, headers=headers)  # 获得响应
    htmlText = respon.content.decode("gbk")
    s = etree.HTML(htmlText)  # 将源码转化为能被XPath匹配的格式
    html_data = s.xpath("//table//tr[@class='countytr']//a") # 提取相同的前缀
    for i in html_data:
        qu_code = i.xpath("//td[1]/text()")  # 城市的code码
        qu_name = i.xpath("//td[2]//text()") # 城市的名字
        # print(qu_name)
        qu_URL = i.xpath("//td[2]//@href")  # 城市的详细链接       '02/130202.html', '02/130203.html'
        # print(qu_URL)
        qu_url_code=qu_URL[3:]         #130202.html
        # print("*****************************************")
        Get_qustreet(qu_url_code, city_url_code)
        break   #必须的

#
def Get_qustreet(qu_url_code,city_url_code):
    for i in qu_url_code:
        qustreet="http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2018/%s/%s"%(city_url_code,i)
        # print(qustreet)
        respon = requests.get(qustreet, headers=headers)  # 获得响应
        htmlText = respon.content.decode("gbk")
        s = etree.HTML(htmlText)  # 将源码转化为能被XPath匹配的格式
        html_data = s.xpath("//table//tr[@class='towntr']") # 提取相同的前缀
        for i in html_data:
            street_code = i.xpath("//td[1]//text()")  # code
            qu_name = i.xpath("//td[2]//text()")[1:]    # 名称
            qu_url = i.xpath("//td[2]//@href")     # 链接
            street_url_code=qustreet[:-11]   #http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2018/13/02/
            Get_street(street_url_code,qu_url)
            break
        break

def Get_street(street_url_code,qu_code):
    for i in qu_code:
        joggled_url=street_url_code+i    #http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2018/13/02/05/130205001.html
        # print(joggled_url)
        respon = requests.get(joggled_url, headers=headers)  # 获得响应
        htmlText = respon.content.decode("gbk")
        s = etree.HTML(htmlText)  # 将源码转化为能被XPath匹配的格式
        html_data = s.xpath("//table//tr[@class='villagetr']")  # 提取相同的前缀
        for i in html_data:
            street_code = i.xpath("//td[1]//text()")  # code统计用区划代码
            qu_name = i.xpath("//td[2]//text()")[1:]  # 城乡分类代码
            qu_name = i.xpath("//td[3]//text()")[1:]  # 名称
            print(qu_name)
            break

GET_URL()

目前此代码只是初期的,只是能进行逐一查询,后面会加上去重,代码封装,入库,还有注释部分不够完善

相关文章

  • 城市五级连爬

    目前此代码只是初期的,只是能进行逐一查询,后面会加上去重,代码封装,入库,还有注释部分不够完善

  • 记3月29

    爬山爬了一天,下午回去就赖在床上, 连动手机的欲望都没有… 算了,晚安,城市

  • 鲁迅篇幅六

    从前梁实秋教授曾经说过:穷人总要爬,不断爬,爬到富翁的地位不止穷人,奴隶也要爬有了爬的上的机会,连奴隶也会觉得自己...

  • 瀑布

    为了它我连走带爬了四个小时。

  • 【Python爬虫】爬取城市

  • 在“动词”的魅力下

    “从前梁实秋教授曾经说过:穷人总是要爬,往上爬,爬到富翁的地位。不但穷人,奴隶也是要爬的,有了爬得上的机会,连奴隶...

  • 人生

    如果你把自己的人生之路当作是爬山,跌倒了就不要哭。 因为你连爬都没有爬完...

  • 过隙影-《无初心怎可前行》

    只有跳出那个圈子时,才会有自己独立的一颗心。 只有不再摸(连)爬(滚)滚(带)打(爬)时,才会去考虑为何去滚和爬。...

  • 困倦

    疲惫慢慢地上爬 爬啊爬 从脚踝到后背 后背上蜿蜒匍匐 最终爬到头顶 自此 疲惫压顶 连哈欠也不想打 就这样趴在桌上...

  • 2.爬取智联招聘的职位信息1.0

    目标 1.手动输入要爬取的职位,爬取的页数,目标城市2.将爬取到的数据储存到指定的文件中3.记录爬取记录到log日...

网友评论

      本文标题:城市五级连爬

      本文链接:https://www.haomeiwen.com/subject/inlkzqtx.html