python爬取天气网的全国空气质量指数排行榜(使用正则表达式和Xpath方法

python爬取天气网的全国空气质量指数排行榜(使用正则表达式和Xpath方法)@★驱逐舰★

python爬取天气网的全国空气质量指数排行榜(使用正则表达式和Xpath方法

这是我的第二篇博客
在这里插入图片描述

目的

爬取天气网的全国空气质量指数排行榜,使用正则和Xpath两种方法进行爬取数据,输出得到的排行榜数据并将数据保存到EXCEL文件中。
在这里插入图片描述

代码

俗话说不提供代码就是流氓行为,这里先奉上代码~~

第一种方法:正则表达式方法
import requests
import re
import prettytable as pt    #导入用以python以表格的形式输出的prettytable库
import xlwt      #导入用以将数据保存到ECXEL文件中的xlwt库

#获取网页数据
url = 'http://www.tianqi.com/air/'
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36sudaref: graph.qq.com'
}

response = requests.get(url=url,headers=headers)
result = response.content.decode('gbk')

#解析数据
data = re.findall('<li\sid=".*?"><span\sclass=.*?>(.*?)</span><span\sclass=".*?"><a\shref=.*?>(.*?)</a>.*?<span.*?>(.*?)</span>.*?<em.*?>(.*?)</em>',result,re.S)       

#输出、保存数据
tb = pt.PrettyTable()
tb.field_names = ["排名", "城市", "空气质量指数", "质量状况"]
for i in range(len(data)):
    tb.add_row([data[i][0],data[i][1],data[i][2],data[i][3]])
print(tb)
book = xlwt.Workbook(encoding='utf-8')    #将其导入EXCEL表格中进行保存
sheet = book.add_sheet('sheet1')
my_data=["排名","城市","空气质量指数","质量状况"]
for i in range(0,4):
    sheet.write(0,i,my_data[i])
for j in range(len(data)):
    sheet.write(j+1,0,data[j][0])
    sheet.write(j+1,1,data[j][1])
    sheet.write(j+1,2,data[j][2])
    sheet.write(j+1,3,data[j][3])
book.save('全国重点城市空气质量指数排行榜.xls')

将得到数据输出:
哈哈
并将数据保存到EXCEL文件中:
在这里插入图片描述

第二种方法:Xpath方法
#xpath方法
import requests
from lxml import etree
import prettytable as pt    #导入用以python以表格的形式输出的prettytable库

#获取网页数据
url = 'http://www.tianqi.com/air/'
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36sudaref: graph.qq.com'
}

response = requests.get(url=url,headers=headers)
html = etree.HTML(response.text)
id_list = html.xpath('//div[@class="meta"]/ul/li/@id')

#解析数据
del(id_list[0])   #第0号元素无用,不是目标数据,将其删除
data = []     #建立一个新的列表存放最终数据
tb = pt.PrettyTable()
for i in range(len(id_list)):
    j = id_list[i]
    result = html.xpath('//div[@class="meta"]/ul/li[@id="%s"]/span/text()'%j)    #获取排名和空气质量指数
    city = html.xpath('//div[@class="meta"]/ul/li[@id="%s"]/span/a/text()'%j)    #获取城市名
    result.insert(1,city[0])   #将城市名插入到1号位置
    quality = html.xpath('//div[@class="meta"]/ul/li[@id="%s"]/span/em/text()'%j)    #获取质量状况
    result.append(quality[0])  #将质量状况添加到result末尾
    data.append(result)    #通过for循环将所有result添加到data列表中

#输出、保存数据
tb.field_names = ["排名", "城市", "空气质量指数", "质量状况"]
for i in range(len(data)):
    tb.add_row([data[i][0],data[i][1],data[i][2],data[i][3]])
print(tb)

#将其导入EXCEL表格中进行保存
import xlwt
book = xlwt.Workbook(encoding='utf-8')
sheet = book.add_sheet('sheet1')
my_data=["排名","城市","空气质量指数","质量状况"]
for i in range(0,4):
    sheet.write(0,i,my_data[i])
for j in range(len(data)):
    sheet.write(j+1,0,data[j][0])
    sheet.write(j+1,1,data[j][1])
    sheet.write(j+1,2,data[j][2])
    sheet.write(j+1,3,data[j][3])
book.save('全国重点城市空气质量指数排行榜2.xls')

Xpath方法输出数据和保存到EXCEL文件效果相同,所以此处省略效果图。

总结:该网站没有较复杂的反爬虫机制,较为容易爬取,主要是需要对网页源代码的进行解析、数据的保存方法进行熟练掌握。
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45104240/article/details/102965319