python多进程爬取天气信息

本文介绍了一个使用Python进行多进程爬取近15个月、120个城市每日天气信息的过程。通过分析网址规律,提取城市列表并转换为拼音,结合日期生成网址,利用BeautifulSoup解析网页获取天气数据。为了提高效率,采用了多进程技术,并随机设置请求头以模拟浏览器访问。在实际运行中发现,由于部分城市拼音相同或地区归属问题,导致数据不完整,需要注意正则表达式的灵活性以避免漏爬。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

受人之托,需要指定时间段内将近15个月的120个城市的每日天气情况。查看网络,发现一个发布各个城市的历史天气的网址,http://lishi.tianqi.com,观察网址发现其具有一定的规律性:比如http://lishi.tianqi.com/putian/201609.html指的是莆田的2016年9月的天气,前缀网址是一个固定的字符串“http://lishi.tianqi.com/”。然后我们知道爬取的天气是2015年的7月到2016年的11月。
基本思路就是首先提取到城市的列表,将城市全部转成拼音,得到一个拼音的城市名称列表。然后生成一个日期列表,每个城市和每个日期拼接得到网址。每个网址下都有一个很有规律的天气表格,包含日期,最高气温,最低气温,天气,风向,风力的信息。使用BeautifulSoup解析网页后就可以提取信息,以城市名称为单位,建立txt文件记录每个城市的信息,即可获取全部的天气情况。
考虑爬取网页的数量略大,可以考虑使用多进程,然后每个进程抓取的结果处理后各自保存成文件就可以了。为了伪装成浏览器访问,建立header列表,然后每个进程每次爬取都随机取出一个Header伪装。
 部分城市拼音转化后的结果
年月的列表
所有要先把这个表格读进内存。

#coding:utf-8
import urllib2
import re
from bs4 import BeautifulSoup
import time
import random
import sys
import pandas as pd
import numpy as np
from numpy import mat
from multiprocessing import Pool
reload(sys)
sys.setdefaultencoding('utf-8')
'''参考文献 http://wangye.org/blog/archives/629/'''

#加载浏览器的user-agent
def getHeaderLst():
    headerLst = []
    headers = {
  
  'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Ge
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值