天气数据爬取

打印 上一主题 下一主题

主题 825|帖子 825|积分 2475

历史气象数据获取

   重要的python包
requests
BeautifulSoup
re
pandas
lxml
  欣赏器访问模拟

根据欣赏器Request-Header参数,让request模拟欣赏器行为
  1. import requests
  2. from bs4 import BeautifulSoup
  3. import re
  4. import pandas as pd
  5. url = 'https://www.wentian123.com/history/?location=%E5%98%89%E5%B3%AA%E5%85%B3&startdate=2024-01-01&enddate=2024-08-15'
  6. header = {
  7.     'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
  8. 'Accept-Encoding': 'gzip, deflate, br, zstd',
  9. 'Accept-Language': 'zh-CN,zh;q=0.9',
  10. 'Cache-Control': 'max-age=0',
  11. 'Connection': 'keep-alive',
  12. 'Cookie': 'Hm_lvt_452d5df9c96fd4e38bdb12c20493de8a=1724145184; HMACCOUNT=7E8A91446E19E40E; Hm_lvt_a1574f7ae5f0b9e15ea9a7c1cd8e90c2=1724145900; Hm_lpvt_a1574f7ae5f0b9e15ea9a7c1cd8e90c2=1724918557; Hm_lpvt_452d5df9c96fd4e38bdb12c20493de8a=1724923348',
  13. 'Host': 'www.wentian123.com',
  14. 'Referer': 'https://qq.ip138.com/weather/lishi.htm',
  15. 'Sec-Fetch-Dest':'document',
  16. 'Sec-Fetch-Mode': 'navigate',
  17. 'Sec-Fetch-Site': 'cross-site',
  18. 'Sec-Fetch-User': '?1',
  19. 'Upgrade-Insecure-Requests': '1',
  20. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36',
  21. 'sec-ch-ua': '"Not)A;Brand";v="99", "Google Chrome";v="127", "Chromium";v="127"',
  22. 'sec-ch-ua-mobile': '?0',
  23. 'sec-ch-ua-platform': "Windows",
  24. }
  25. #  创建数据表格
  26. #
复制代码
  header参数获取方式;
访问页面->右键->检查
  这里重要是为了制止一些根本的反爬虫操作,若网站没有反爬虫机制,不配置,或者之配置基础的’User-Agent’参数即可。

  1. # 输入参数根据检索网址进行配置
  2. 如:url = 'https://www.XXX.com/history/?location=%E5%98%89%E5%B3%AA%E5%85%B3&startdate=2024-01-01&enddate=2024-08-15'
  3. # 其中的location、startdate、enddate是当你进行网页检索时输入的信息,这里通过params进行传递;中文的话,会进行自动转码
  4. params = {
  5.     'location': '嘉峪关',
  6.     'startdate': '2024-01-01',
  7.     'enddate': '2024-08-15'
  8. }
  9. # 请求网页链接
  10. response = requests.get(url,params=params,headers=header)
  11. # 解析网页
  12. soup = BeautifulSoup(response.content, 'lxml')
  13. # 根据网页检查显示的结果,通过访问树文件提取检索数据
  14. datasoup = soup.find_all('tbody')
  15. datas = datasoup[0].find_all('tr')
  16. result= []
  17. for data in datas:
  18.     # 使用正则表达式搜索匹配项
  19.     test_list  = data.text.split('\n')
  20.     test_list = [item for item in test_list if item.strip() != '']
  21.     # ['星期四', '2024-08-15', '多云转晴', '15℃ ~ 30℃', '西北风转微风 3-4级转<3级']
  22.     week = test_list[0]
  23.     date = test_list[1]
  24.     weather = test_list[2]
  25.     temperature = test_list[3]
  26.     winds = test_list[4].split(' ')[0]
  27.     winds_level = test_list[4].split(' ')[1]
  28.     result.append([date, weather, temperature, winds, winds_level])
  29. data = pd.DataFrame(result, columns=['日期', '天气', '温度', '风向','风力'])
  30. data.to_excel(r'XXX\爬虫代码\县区_weather_data.xlsx', index=False)
复制代码
request
beautifulesoup

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

河曲智叟

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表