python利用xpath爬取天气预报信息

本文介绍了如何使用Python爬虫从weather.com.cn获取天气预报信息。通过爬取网页源码并利用XPath解析,成功获得了7天天气数据,并将结果保存为weatherbyzj.json文件。

天气网站如下:
http://www.weather.com.cn/weather/101281001.shtml

爬取各天气信息:

"""
思路分析:
    ①div/ul/li,获得7天天气预报的所有信息;  --lxml、requests、XPath   --list类型
    ②li下的所有数据进行提取数据;  --对上述的7条数据进行处理,提取数据  XPath
    ③保存文件。  --文件操作、json模块。
"""

首先试着将网址的源码爬取下来

def parse_url(url, header):
    """解析url地址,获得网页的所有数据内容"""
    response = requests.get(url, headers=header)
    # 数据
    # return response.text
    return response.content.decode("utf-8")

def main():
    # print("HelloWorld...")
    # ①div/ul/li,获得7天天气预报的所有信息;  --lxml、requests、XPath   --list类型
    # 网址、请求头
    http_url = "http://www.weather.com.cn/weather/10128100101A.shtml"
    headers = {
   
   
        "User-Agent": "Mozi424/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/524.36 (KHTML, like Gecko) Chrome/72.0.3617.111 Safari/414.36"}
    # 解析url
    html_data = parse_url(http_url, headers)
    print(html_data)

发现成功输出网页的源码,说明爬取成功。
利用xpath爬取天气预报的关键信息,获得7天天气信息,并保存到file下的weatherbyzj.json下,完整代码如下:

# coding:utf-8
import requests
import lxml.html
import json

"""
思路分析:
    ①div/ul/li,获得7天天气预报的所有信息;  --lxml、requests、XPath   --list类型
    ②li下的所有数据进行提取数据;  --对上述的7条数据进行处理,提取数据  XPath
    ③保存文件。  --文件操作、json模块。
"""


def parse_url(url, header):
    """解析url地址,获得网页的所有数据内容"""
### Python 使用 XPath 爬取网页教程 #### 准备工作 为了使用XPath进行网页爬取,需要安装`requests`用于发送HTTP请求,以及`lxml`库来处理和解析HTML或XML文档。 ```bash pip install requests lxml ``` #### 发送HTTP请求并获取网页内容 利用`requests.get()`函数发起GET请求到目标网站,并通过`.content`属性获得响应的内容。这一步骤是整个过程的基础[^2]。 ```python import requests url = 'http://example.com' response = requests.get(url) html_content = response.content ``` #### 初始化XPath解析器 创建一个`etree.HTMLParser`对象并将之前得到的HTML字符串传递给它;接着调用`etree.parse()`方法完成DOM树构建。最后准备好了执行XPath查询所需的环境[^4]。 ```python from lxml import etree parser = etree.HTMLParser() tree = etree.fromstring(html_content, parser=parser) ``` #### 编写XPath表达式定位所需元素 根据实际需求编写合适的XPath表达式以精确定位想要抓取的数据项。这里给出几个常见场景下的示范: - 获取所有链接地址: ```python links = tree.xpath('//a/@href') print(links) ``` - 提取出特定类名下所有的文本内容: ```python texts = tree.xpath("//div[@class='specific-class']/text()") print(texts) ``` - 查找具有指定ID属性的img标签内的src值(即图片URL): ```python image_urls = tree.xpath("//img[@id='target-image-id']/@src") print(image_urls) ``` 以上便是基于PythonXPath实现简单网页爬虫的主要流程概述[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值