在程工一边开心的团建的时候,赶紧赶他布置的作业:
这个作业已经有好几个同学完成了,所以我其实就是拿来抄的...
import requests
from lxml import etree
import random
import json
import csv
Headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36',
'Referer':'http://www.weather.com.cn/weather40d/101091101.shtml',
}
天气网也有反爬,所以请求头这里要有Referer,“因为这是浏览器发出请求时,会通过Referer告诉服务器我是从哪个页面链接过来的,有些网站会对这个做验证,主要时为了防止别人盗链的问题。不是的话就会403禁止访问服务器。”——引自chaosmind
url= 'http://d1.weather.com.cn/calendar_new/2017/101091101_201706.html'
html= requests.get(url,headers=Headers).content
infos=json.loads(html[11:])
然后就是找包,天气网也是json包加载的。不过切片是第一次遇到,如果不是大家提醒,这个[11:]估计也要坑上一会儿。
不过人品始终是守恒的,headers=Headers()居然被我昏了头加个括号,报错“dict”is not
callable,对着别人的功课都检查不出来,折腾了快半小时...
import os
os.chdir('E:')
csvFile = open("weather.csv",'w+')
try:
writer = csv.writer(csvFile)
writer.writerow(['date','max','min','\n'])
for item in infos:
date=item['date']
max=item['max']
min=item['min']
writer.writerow([date,max,min])
finally:
csvFile.close()
写入csv文件以前有练过,没有什么问题,收工。
天气网的只有40天包,迟点加个循环,多爬几个月,做个数据分析。再供大家参考。