1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 爬虫实战——中国天气网数据

爬虫实战——中国天气网数据

时间:2023-12-08 00:10:47

相关推荐

爬虫实战——中国天气网数据

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

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

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

现在开始操作了:

步骤一

import osos.chdir("C:\\Users\\TIM")

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

步骤二

from bs4 import BeautifulSoupimport requestsresult2 = requests.get("/weather/101190401.shtml")r2 = result2.textsoup = BeautifulSoup(r2, 'lxml')print(soup.prettify())

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

步骤三

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

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

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

步骤四

输入至文本文档。

import sysclass Logger(object):def __init__(self, fileN="Default.log"):self.terminal = sys.stdoutself.log = open(fileN, "a", encoding="utf-8")def write(self, message):self.terminal.write(message)self.log.write(message)def flush(self):pass

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

最后这是整个代码:

import osfrom lxml import etreefrom bs4 import BeautifulSoupimport requestsimport sysclass Logger(object):def __init__(self, fileN="Default.log"):self.terminal = sys.stdoutself.log = open(fileN, "a", encoding="utf-8")def write(self, message):self.terminal.write(message)self.log.write(message)def flush(self):passos.chdir("C:\\Users\\TIM")html = etree.parse('./test.html', etree.HTMLParser())result = html.xpath('//script/text()')r = list(result[0].split(','))sys.stdout = Logger("D:\\11.txt")print(r)print('\n')result2 = requests.get("/weather/101190401.shtml")r2 = result2.textsoup = BeautifulSoup(r2, 'lxml')print(soup.prettify())

输出结果:

END

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。