python天气爬虫_Python 实现中国天气小爬虫

实现过程

1.原理

通过Chrome的开发者工具浏览elements;

找到keyword:id='hidden_value',发现是唯一元素且显示了当天的天气情况;

通过Requests请求页面,Beautiful Soup定位。

120608839_2_20171231054157376

2.实现中遇到的问题

使用requests模块请求的时候遇到中文都是乱码;

使用Beautiful Soup模块匹配到的list怎么拆解分析到最后结果。

3.解决问题

使用requests.encoding发现代码是ISO-8859-1格式,所以通过encoding将格式设定在'utf-8';

先用str强制转换类型再用string.split切割字符串。

代码:

importrequests

frombs4importBeautifulSoup

importre

r = requests.get('http://www.weather.com.cn/weather/101020100.shtml')

print(r.encoding)

r.encoding ='utf-8'#防止乱码出现

soup = BeautifulSoup(r.text,'html.parser')

todayinfolist = soup.find_all(id='hidden_title')

str_todayinfo = str(todayinfolist[0])   #将列表元素转换为字符串

split1 = str_todayinfo.split('value='')

str_split1 = str(split1[1])

todayinfo = str_split1.split(''')

print(todayinfo[0])

Python简单爬虫入门

为大家介绍一个简单的爬虫工具BeautifulSoup。BeautifulSoup拥有强大的解析网页及查找元素的功能本次测试环境为python3.4(由于python2.7编码格式问题)。

此工具在搜索你想爬的数据匹配的方式就是html标签嵌套的顺序(html介绍在其它随笔内)。

首先来聊聊BeautifulSoup的安装pip install python-bs4包含BeautifulSoup方法,再来安装依赖工具requests和解析格式lxml下载安装包 解压进入目录python setup.py install此方法是请求服务。

先来写一个简单的网页解析代码如下:#!/usr/bin/env python

# -*- coding:utf-8 -*-

from bs4 import BeautifulSoup

import requests

headers = {

'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',

}

url = 'http://www.jd.com/'

wb_data = requests.get(url,headers=headers)

soup = BeautifulSoup(wb_data.text,'lxml')

print(soup)

来简单说明下每行代码的作用:

从bs4库里import导入BeautifulSoup方法;

import导入requests方法;

headers表示头文件,伪装成浏览器浏览网页,当然我这里写得简单还没写全;

url网页地址;

wb_data网页数据requests.get请求访问(url网页京东,headers伪装的头文件)

soup解析后的数据BeautifulSoup解析数据(wb_data网页数据,lxml解析的格式按这个要求解析)

print答应soup解析后的网页数据,也就是网页源代码如下(由于网页源代码很长所以这里截图只能显示一部分)

120608839_3_20171231054157564

学好基础包括html的结构标签的嵌套还有CSS的名字在网页位置等后教你们怎么去抓电影等网站并且把内容归类好方便查阅。

下面是我抓去某电影网站的数据及归类效果掩饰:

120608839_4_20171231054157829

Python简单爬虫示例#coding=utf-8

import urllib

import re

def downloadPage(url):

h = urllib.urlopen(url)

return h.read()

def downloadImg(content):

pattern = r'src='(.+?\.jpg)' pic_ext'

m = re.compile(pattern)

urls = re.findall(m, content)

for i, url in enumerate(urls):

urllib.urlretrieve(url, '%s.jpg' % (i, ))

content = downloadPage('http://tieba.baidu.com/p/2460150866')

downloadImg(content)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值