当前位置:   article > 正文

爬虫实战——中国天气网数据_爬取天气预报的目的

爬取天气预报的目的

这次的爬虫主要目的就是爬取当日中国天气网的即时气候数据。我位于苏州所以爬取的是苏州7月19号的天气。

首先,使用的是beautifulsoup和xpath解析库,因为是纯练习性质,所以分别解析了两趟,最后把数据写入txt文档中。

打开浏览器,键入http://www.weather.com.cn/weather/101190401.shtml进入中国天气网,鼠标右键保存网页。命名为1.html

现在开始操作了:

  • 步骤一
  1. import os
  2. os.chdir("C:\\Users\\TIM")

这是转到我保存网页的地址,chdir中的地址随保存路径而定。

  • 步骤二
  1. from bs4 import BeautifulSoup
  2. import requests
  3. result2 = requests.get("http://www.weather.com.cn/weather/101190401.shtml")
  4. r2 = result2.text
  5. soup = BeautifulSoup(r2, 'lxml')
  6. print(soup.prettify())

第二步用靓汤解析,requests库用于爬取网页html代码并保存于result变量,最后的prettify()使得代码以缩进形式呈现。缩进形式方便查看需要数据所在的位置。

  • 步骤三
  1. from lxml import etree#引入xpath库
  2. html = etree.parse('./test.html', etree.HTMLParser())#将保存的网页进行解析
  3. result = html.xpath('//script/text()')#解析script标签的文本信息
  4. print(result)#打印至屏幕以确认无误

根据之前用beautifulsoup显示的网页信息发现要找的数据在script标签下。用xpath解析相应标签,从序号0开始到最后一个,例如打印序号为0的标签:

  1. r = list(result[0].split(','))#将爬取的结果转为列表并以逗号分隔
  2. print(r)#打印至屏幕以确认无误
  • 步骤四

输入至文本文档。

  1. import sys
  2. class Logger(object):
  3. def __init__(self, fileN="Default.log"):
  4. self.terminal = sys.stdout
  5. self.log = open(fileN, "a", encoding="utf-8")
  6. def write(self, message):
  7. self.terminal.write(message)
  8. self.log.write(message)
  9. def flush(self):
  10. pass

定义了logger类,其功能是使得屏幕输出保存到txt文件。

  • 最后这是整个代码:
  1. import os
  2. from lxml import etree
  3. from bs4 import BeautifulSoup
  4. import requests
  5. import sys
  6. class Logger(object):
  7. def __init__(self, fileN="Default.log"):
  8. self.terminal = sys.stdout
  9. self.log = open(fileN, "a", encoding="utf-8")
  10. def write(self, message):
  11. self.terminal.write(message)
  12. self.log.write(message)
  13. def flush(self):
  14. pass
  15. os.chdir("C:\\Users\\TIM")
  16. html = etree.parse('./test.html', etree.HTMLParser())
  17. result = html.xpath('//script/text()')
  18. r = list(result[0].split(','))
  19. sys.stdout = Logger("D:\\11.txt")
  20. print(r)
  21. print('\n')
  22. result2 = requests.get("http://www.weather.com.cn/weather/101190401.shtml")
  23. r2 = result2.text
  24. soup = BeautifulSoup(r2, 'lxml')
  25. print(soup.prettify())
  • 输出结果:

END

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/373283
推荐阅读
相关标签
  

闽ICP备14008679号