Python简朴两步实现天气爬虫收罗器
当前位置:以往代写 > Python教程 >Python简朴两步实现天气爬虫收罗器
2019-06-14

Python简朴两步实现天气爬虫收罗器

Python简朴两步实现天气爬虫收罗器

说道爬虫各人或者感受很是神秘,其实它没有我们想象的那么神奇(虽然,google和baidu的爬虫是一场巨大和强大的,它的强大不是爬虫自己强大,而是靠山的数据处理惩罚和数据挖掘算法很是强大),本日我们就来揭开它神秘的面纱。呵呵,简朴两步就可以实现一个网页天气爬虫措施。。。

爬虫简朴说来包罗两个部门:1.得到网页文本信息。2.数据阐明,获取个中我们想要的数据。

1、得到网页文本信息。

python在获取html方面十分利便,有了urllib库的辅佐,只需要几行代码就可以实现我们需要的成果。

#引入urllib库
import urllib 
def getHtml(url): 
page = urllib.urlopen(url) 
html = page.read() 
page.close() 
return html

这里返回的就是网页的源代码,也就是html代码。

那我们如何从中获得我们想要的信息呢?那就需要用到在网页阐明内里最最常用的东西 – 正则表达式 了。

2、按照正则表达式等得到需要的内容。

利用正则表达式时需要仔细调查该网页信息的布局,并写出正确的正则表达式。

python正则表达式的利用也很简捷:

#引入正则表达式库
import re
def getWeather(html): 
reg = '<a title=.*?>(.*?)</a>.*?<span>(.*?)</span>.*?<b>(.*?)</b>'
weatherList = re.compile(reg).findall(html) 
return weatherList

说明:

个中reg是正则表达式,html是第一步得到的文本。findall的浸染是找到html中所有切合正则匹配的字符串并存放到weatherList中。之后再列举weatheList中的数据输出即可。

这里的正则表达式reg有两个处所要留意。

一个是“(.*?)”。只要是()中的内容都是我们将要得到的内容,假如有多个括号,那么findall的每个功效就都包括这几个括号中的内容。上面有三个括号,别离对应都市、最低温和最高温。

另一个是“.*?”。python的正则匹配默认是贪婪的,即默认尽大概多地匹配字符串。假如在末端加上问号,则暗示非贪婪模式,即尽大概少地匹配字符串。在这里,由于有多个都市的信息需要匹配,所以需要利用非贪婪模式,不然匹配功效只剩下一个,且是不正确的。

    关键字:

在线提交作业