xpath爬取新浪天气
参考资料:
http://cuiqingcai.com/1052.html
http://cuiqingcai.com/2621.html
http://www.cnblogs.com/jixin/p/5131040.html
完整代码:
# -*- coding:utf-8 -*-
import urllib2
from lxml import etree
user_agent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
headers = {'User-Agent':user_agent}
url = 'http://weather.sina.com.cn/'
user_input = raw_input("请输入你想查询天气的城市的拼音,如beijing\n")
# print user_input
url = url+user_input
# print url
req = urllib2.Request(url,headers=headers)
reponse = urllib2.urlopen(req)
text = reponse.read()
# print html
# print type(text)
html = etree.HTML(text)
# print html
# result = etree.tostring(html)
# print result
# 有时候当天天气信息的icons和times数据只有19条,分开处理
def change_list(lis):
new_lis = []
if len(lis) == 19:
if lis == icons:
new_lis.append(lis[0])
for i in range(1,19,2):
new_lis.append(lis[i]+u'转'+lis[i+1])
elif lis == times:
new_lis.append(lis[0].text)
for i in range(1, 19, 2):
new_lis.append(lis[i].text + u'到' + lis[i + 1].text)
elif len(lis) == 20:
if lis == icons:
for i in range(20,2):
new_lis.append(lis[i]+u'转'+lis[i+1])
elif lis == times:
for i in range(20,2):
new_lis.append(lis[i].text + u'到' + lis[i + 1].text)
return new_lis
note1 = html.xpath('//*[@class="wt_tt0_note"]')
note2 = html.xpath('//*[@class="wt_tt0_note"]/..')
# print note[0].text
dates = html.xpath('//*[@class="wt_fc_c0_i_date"]')
days = html.xpath('//*[@class="wt_fc_c0_i_date"]/following-sibling::*[1]')
icons = html.xpath('//*[@class="wt_fc_c0_i_icons clearfix"]/img/@alt')
# print len(icons)
icons = change_list(icons)
times = html.xpath('//*[@class="wt_fc_c0_i_times"]/span')
times = change_list(times)
temps = html.xpath('//*[@class="wt_fc_c0_i_temp"]')
tips = html.xpath('//*[@class="wt_fc_c0_i_tip"]')
ls = html.xpath('//*[@class="l"]')
rs = html.xpath('//*[@class="r"]')
print note1[0].text,note2[0].text
# print len(ls),len(rs)
# PM2.5和空气质量只有7条数据
for i in range(7):
print dates[i].text, days[i].text, times[i], icons[i], temps[i].text, tips[i].text, u'PM2.5:'+ls[i].text, u'空气质量:'+rs[i].text
for i in range(7,10):
print dates[i].text, days[i].text, times[i], icons[i], temps[i].text, tips[i].text
xpath爬取新浪天气的更多相关文章
- selenium+BeautifulSoup+phantomjs爬取新浪新闻
一 下载phantomjs,把phantomjs.exe的文件路径加到环境变量中,也可以phantomjs.exe拷贝到一个已存在的环境变量路径中,比如我用的anaconda,我把phantomjs. ...
- Python3:爬取新浪、网易、今日头条、UC四大网站新闻标题及内容
Python3:爬取新浪.网易.今日头条.UC四大网站新闻标题及内容 以爬取相应网站的社会新闻内容为例: 一.新浪: 新浪网的新闻比较好爬取,我是用BeautifulSoup直接解析的,它并没有使用J ...
- Python 爬虫实例(7)—— 爬取 新浪军事新闻
我们打开新浪新闻,看到页面如下,首先去爬取一级 url,图片中蓝色圆圈部分 第二zh张图片,显示需要分页, 源代码: # coding:utf-8 import json import redis i ...
- python3爬虫-爬取新浪新闻首页所有新闻标题
准备工作:安装requests和BeautifulSoup4.打开cmd,输入如下命令 pip install requests pip install BeautifulSoup4 打开我们要爬取的 ...
- python3使用requests爬取新浪热门微博
微博登录的实现代码来源:https://gist.github.com/mrluanma/3621775 相关环境 使用的python3.4,发现配置好环境后可以直接使用pip easy_instal ...
- python2.7 爬虫初体验爬取新浪国内新闻_20161130
python2.7 爬虫初学习 模块:BeautifulSoup requests 1.获取新浪国内新闻标题 2.获取新闻url 3.还没想好,想法是把第2步的url 获取到下载网页源代码 再去分析源 ...
- python爬取新浪股票数据—绘图【原创分享】
目标:不做蜡烛图,只用折线图绘图,绘出四条线之间的关系. 注:未使用接口,仅爬虫学习,不做任何违法操作. """ 新浪财经,爬取历史股票数据 ""&q ...
- 【python3】爬取新浪的栏目分类
目标地址: http://www.sina.com.cn/ 查看源代码,分析: 1 整个分类 在 div main-nav 里边包含 2 分组情况:1,4一组 . 2,3一组 . 5 一组 .6一组 ...
- Python-定时爬取指定城市天气(一)-发送给关心的微信好友
一.背景 上班的日子总是3点一线,家里,公司和上班的路径,对于一个特别懒得我来说,经常遇到上班路上下雨了,而我却没带伞,多么痛的领悟.最近对python有一种狂热的学习热情,写了4年多的C++代码,对 ...
随机推荐
- 冒泡排序 & 选择排序(升序)
软件工程上老师讲流程图时,要求画冒泡排序和选择排序的流程图--------问题来了,故想基于百度两种排序后,自我总结的写些什么 请将一维数组a[n] 里面的 n个元素 升序排好 ---------- ...
- 关于pycharm有时候提取不了form表单POST提交的数据
1.有可能标签没有name属性 2.name属性要放在第一个位置,放在末尾有时候会出现BUG导致识别不出,提取的值为None.
- Scrapy爬取猫眼《复仇者联盟4终局之战》影评
一.分析 首先简单介绍一下Scrapy的基本流程: 引擎从调度器中取出一个链接(URL)用于接下来的抓取 引擎把URL封装成一个请求(Request)传给下载器 下载器把资源下载下来,并封装成应答包( ...
- abap 常用TCODE
ABAP: 通过查询表TSTC或者TSTCT:SAP系统将所有的事务代码都存储在这个表中,包括字开发的Y*和Z* TCODE 事务代码功能描述 CG3Y 下载服务器上文件 CG3Z upload fi ...
- Ruby http/net 中连接超时问题
下面在调用币安的接口时,经常会卡住,设置连接超时也不会抛出异常,代码如下(默认连接超时为nil, 参考:https://github.com/ruby/ruby/pull/269): require ...
- jmeter在几个固定的字符串中,随机取其中之一的方法
在测试过程中遇到上送字段必需是几个固定值中的一个, 使用读取文件中几个固定值,然后随机在这几个固定值中选择的办法解决问题 __CSVRead() CSV file to get values from ...
- 为什么text的值改变后onchange没有反应?
onchange发生在元素失去焦点后,而不是想象中的元素的值发生改变的时候.其实它的作用就跟onblur(失去焦点事件)差不多,只不过onchange是失去焦点且值发生了改变.要想实现目的,可以改用o ...
- Quartz.Net进阶之七:QuartzNet其他的功能简述
一.介绍 今天是这个系列的最后一篇文章了,主要功能说的差不多了,我们来看看其他相关的内容.话说回来,虽然是这个系列的最后一篇文章,并不代表Quartz的东西就这么点,学习阶段,就这些了,如果以后有了使 ...
- 字符模式console usb串口安装centos
黄色部分是使用console口安装centos需要使用text模式,可以参考前文,同时镜像路径也是需要指定的,来自/dev/sda4 U盘 setparams 'Install CentOS 7' l ...
- google搜索引擎正确打开姿势
Google搜索引擎 原文来自黑白之道微信公众号 https://mp.weixin.qq.com/s/Ey_ODP_mG00of5DPwcQtfg 这里之所以要介绍google搜索引 ...