zoukankan      html  css  js  c++  java
  • PyQuery爬取历史天气信息

    1.准备工作:

      网址:https://lishi.tianqi.com/xian/index.html

      爬虫类库:PyQuery,requests

    2.网页分析:

    红线部分可更改为需要爬取的城市名,如:beijing

    红框选中部分即为我们所需要爬取的每个月份的信息. 目测应该是ui li,使用Chrome F12 查看下源代码

    PyQuery的css 选择器可以起床了..

    莫慌莫慌。在瞅瞅具体月份点击进入后的页面效果

      

    所有的具体每一天的天气信息都被包裹在ul li..

    PyQuery.. 开工..

     1 # 获取所有的月份的a标签连接。
     2 def get_html():
     3     links = []
     4     url = 'https://lishi.tianqi.com/xian/index.html'
     5     r1 = requests.get(url,headers)
     6     html_doc = pq(r1.text)
     7     ul = html_doc('.tqtongji1 > ul:nth-child(1)')
     8     lis = ul('li').items()
     9     for li in lis:
    10         a = li('a')
    11         links.append(a.attr('href'))
    12     return links
    # 获取详细页的具体天气信息
    def get_detail(url):
        r1 = requests.get(url,headers)
        html_doc = pq(r1.text)
        uls = html_doc('.tqtongji2').find('ul')
        lis = uls.items('li')
        list = []
        l = '.'.join(li.text() for li in lis).split('.')
        # 由于标题信息只有['日期', '最高气温', '最低气温', '天气', '风向', '风力']所以需要字符串截取
        for i in range(len(l)):
            if i%6 == 0:
                temp = l[i:i+5]
                list.append(temp)
        return list
    1 # 保存至weather.csv
    2 def save_to_csv(data):
    3     with open('weather.csv','a') as csv_file:
    4         writer = csv.writer(csv_file)
    5         for row in data:
    6             writer.writerow(row)

     考虑到需要源代码的小伙伴, 已上传至github.. https://github.com/shinefairy/spider/

    git clone https://github.com/shinefairy/spider

    end~

  • 相关阅读:
    在线程中使用OpenFileDialog
    Log4net附加
    SQL表间列根据条件复制(赋值)
    DataGridView使用
    Latex使用总结及备忘
    Windows获取文件状态
    TabControl取消首次定位焦点
    C#跨线程调用
    电子词典的查寻程序,发送和接收应答程序
    电子词典的相关子函数db.c程序
  • 原文地址:https://www.cnblogs.com/shine-rainbow/p/10003571.html
Copyright © 2011-2022 走看看