码迷,mamicode.com
首页 > 其他好文 > 详细

2、历史天气首页信息提取

时间:2017-05-09 14:59:13      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:兴趣   int   XML   抓取   result   lis   href   结果   pre   

一、引言

          上篇给大家介绍了Python爬虫索要爬去的源网站及所需的软件,本篇开始,将正式的开始爬取数据。

二、爬虫利器 Beautiful Soup

           1、简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据。 

           2、安装 Beautiful Soup

pip install beautifulsoup4

           然后需要安装 lxml

pip install lxml

三、开始爬取网页源码

 1 # coding = utf-8
 2 
 3 import urllib
 4 import urllib.request
 5 from bs4 import BeautifulSoup
 6 
 7 
 8 def getCityLinks():
 9     url = http://lishi.tianqi.com/
10     response = urllib.request.urlopen(url, timeout=20)
11     result = response.read()
12     soup = BeautifulSoup(result, "lxml")
13     print(soup)
14 getCityLinks()

      运行代码:

      技术分享

       结果:

        

# coding = utf-8

import urllib
import urllib.request
from bs4 import BeautifulSoup


def getCityLinks():
    url = http://lishi.tianqi.com/
    response = urllib.request.urlopen(url, timeout=20)
    result = response.read()
    soup = BeautifulSoup(result, "lxml") 
    links = soup.select("ul > li > a")
    for a in links: 
        print(a)
getCityLinks()

 

技术分享

 

 

四、提取城市信息

         至此我们已经获取了网页的源代码,下一步我们索要做的就是提取我们感兴趣的信息。

         我们的目标数据为城市信息,且都是a标签,分析html结构,使用 soup.select("ul > li > a") 提取符合该条件下的所有a标签

         

# coding = utf-8

import urllib
import urllib.request
from bs4 import BeautifulSoup


def getCityLinks():
    url = http://lishi.tianqi.com/
    response = urllib.request.urlopen(url, timeout=20)
    result = response.read()
    soup = BeautifulSoup(result, "lxml")
    links = soup.select("ul > li > a")
    for a in links:
        print(a)
getCityLinks()

          再一次运行,得到如下数据。

技术分享

 并不是所有的a标签都是我们需要的数据,因此再次过滤。

        

# coding = utf-8

import urllib
import urllib.request
from bs4 import BeautifulSoup


def getCityLinks():
    url = http://lishi.tianqi.com/
    response = urllib.request.urlopen(url, timeout=20)
    result = response.read()
    soup = BeautifulSoup(result, "lxml")
    links = soup.select("ul > li > a")
    for a in links:
        if a.get_text() + 历史天气 == a.get(title):
            city = a.get_text()
            url = a.get(href)
            print(a)
getCityLinks()

再次运行后,得到的结果才是我们想要的。

技术分享

     

 

2、历史天气首页信息提取

标签:兴趣   int   XML   抓取   result   lis   href   结果   pre   

原文地址:http://www.cnblogs.com/yansg/p/6830393.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!