这个问题要怎么解决啊。爬虫学的稀烂

img

img


大概问题就是找不到天气元素,打开开发者模式以后要怎么找带有天气元素的节点或者属性啊

【以下回答由 GPT 生成】

将问题中给出的代码进行修改如下:

import requests
from bs4 import BeautifulSoup
import csv

# 发送HTTP GET请求获取网页内容
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110 Safari/537.31'
}
url = 'http://www.weather.com.cn/weather/101230401.shtml'
response = requests.get(url, headers=headers)
response.encoding = 'utf-8'
html = response.text

# 使用BeautifulSoup解析HTML页面
soup = BeautifulSoup(html, 'html.parser')

# 找到包含天气情况的元素
weather_div = soup.find('div', class_='conMidtab2')
weather_table = weather_div.find_all('table')[5]

# 构建CSV文件的表头和数据
header = ['日期', '天气', '最高温度', '最低温度', '风向', '风力']
data = []

# 解析表格中的数据
for tr in weather_table.find_all('tr')[1:]:
    tds = tr.find_all('td')
    date = tds[0].text.strip()
    weather = tds[1].text.strip()
    max_temp = tds[2].text.strip()
    min_temp = tds[3].text.strip()
    wind_direction = tds[4].text.strip()
    wind_power = tds[5].text.strip()
    data.append([date, weather, max_temp, min_temp, wind_direction, wind_power])

# 将数据写入CSV文件
with open('PuTianTiQi.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    writer.writerow(['莆田市2023年8月天气情况'])
    writer.writerow([])
    writer.writerow(header)
    writer.writerows(data)

print('数据写入完成!')

在代码中,我们首先导入需要使用的模块 requestsBeautifulSoup。然后,我们发送一个HTTP GET请求来获取网页内容,并指定头文件的用户代理,以便伪装成浏览器访问。然后,我们使用 BeautifulSoup 解析获得的HTML页面。

接下来,我们通过观察网页的结构和元素,找到了包含天气情况的元素 weather_div。然后,我们使用 find_all 方法查找其中的表格元素,将其中的第6个表格取出赋值给 weather_table。注意,在 find_all 中使用 class_ 参数来指定 class 名称。

然后,我们创建一个空的列表 data 用于存储解析出来的数据。之后,我们使用一个循环遍历表格中的每一行,使用 find_all 方法找出每一行中的所有单元格,并通过索引取出相应的数据。然后,将这些数据添加到 data 列表中。

最后,我们使用 csv 模块中的 writer 对象将数据写入到CSV文件中。我们首先指定文件名为 PuTianTiQi.csv,然后使用 writerow 方法写入标题,writerows 方法写入多行数据。

最后,我们打印出 "数据写入完成!" 的提示,表示程序执行完毕。

请注意,以上代码是根据提供的网页结构和要解析的数据来进行修改的,如果网页结构或数据发生变化,可能需要相应地修改代码。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^