python爬取中国天气网天气并保存为csv格式文件

本文介绍了如何使用Python3.7和lxml库爬取中国天气网上海地区的天气信息,并将数据保存为CSV文件。首先检查robots.txt文件以遵循爬虫规则,然后通过查看网页源代码定位到所需内容,利用CSS选择器抓取wea、tem、win三个属性,最后将数据写入CSV文件。
摘要由CSDN通过智能技术生成

python版本:python3.7
编译器:pycharm
所爬取的网址:http://www.weather.com.cn/weather/101020100.shtml (中国天气网上海)
所用方法:lxml的css选择器
lxml的具体使用方法可以参照我另一篇博客:https://blog.csdn.net/qq_38929220/article/details/83623057

最后运行结果示例如图:
在这里插入图片描述

爬取思路

  1. 检查网站的robots.txt文件
  2. 查看网页源代码找到所要爬取的内容
  3. 写表达式爬取想要的内容
  4. 写入csv文件
检查网站的robots.txt文件

robots.txt文件定义了对爬虫的限制,可以直接手动在想要爬的网址后输入robots.txt查看
例:http://www.weather.com.cn/robots.txt
也可以通过代码实现,这样在爬取其他网页时也可以复用,爬多网页时比较方便。

 # 检查url传递的robots.txt限制
if rp.can_fetch(user_agent, url):
	throttle.wait(url)#延迟函数
    html = download(url, headers, proxy=proxy, num_retries=num_retries)
查看网页源代码找到所要爬取的内容并爬取

右键网页点击查看网页源代码就可以看到网页的源代码。
找出想爬取信息对应的代码。
在这里插入图片描述
可以看出此网站的天气有wea、tem、win三个属性,均写在p标签里,没有定义父标签,可单独直接抓取。

td = tree.cssselect('p.wea,p.tem,p.win')
for wea in td:
	#strip方法用于移除字符串头尾指定的字符
    print(wea.text_content().strip('\n'))
写入csv文件
import csv
from urllib.parse import urlparse
import lxml.html
from link_crawler import link_crawler
import json

#使用回调类而非回调函数以保持csv中write属性的状态
class ScrapeCallback:
    def __init__(self):
    	#不写newline=''的话会出现空行
        self.writer = csv.writer(open('weather.csv', 'w',newline=''))
        #天气 最高温/最低温 风力
        self.fields = ('天气','最高/低温','风力')
        self.writer.writerow(self.fields)

    def __call__(self, url, html):
         tree = lxml.html.fromstring(html)
         td=tree.cssselect('p.wea')
         n=0
         for wea in td:
             row=[]
             row.append(tree.cssselect('p.wea')[n].text_content().strip('\n'))
             row.append(tree.cssselect('p.tem')[n].text_content
  • 6
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python是一种广泛应用于数据科学领域的高级编程语言,可以通过它轻松地爬取百度搜索真实链接,并将结果保存csv格式。 首先,需要安装requests、BeautifulSoup和csvPython库。requests可以发送络请求,BeautifulSoup可以解析HTML文件,而csv可以与CSV文件交互。 其次,需要编写代码来实现爬取百度搜索真实链接的功能。首先,需要用requests库向百度搜索发送HTTP请求,并获取响应的HTML文件。然后,可以使用BeautifulSoup库解析HTML文件,筛选出所有搜索结果的标题和真实链接,并将它们保存为列表。最后,可以使用csv库将列表写入CSV文件。 以下是一个简单的Python代码示例: ``` import requests from bs4 import BeautifulSoup import csv # 发送请求并获取HTML文件 url = 'https://www.baidu.com/s?wd=python' html = requests.get(url).text # 解析HTML文件,并筛选出所有搜索结果的标题和真实链接 soup = BeautifulSoup(html, 'html.parser') results = [] for result in soup.select('#content_left .result'): title = result.select_one('.t').text href = result.select_one('.t a')['href'] results.append([title, href]) # 将结果保存CSV文件 with open('baidu_python_search.csv', 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) writer.writerow(['标题', '链接']) for result in results: writer.writerow(result) ``` 通过运行上述代码,可以爬取百度搜索中关于Python的所有搜索结果的标题和真实链接,随后将其保存到名为baidu_python_search.csvCSV文件中,从而完成任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶柖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值