1. 程式人生 > >2、歷史天氣首頁信息提取

2、歷史天氣首頁信息提取

result pan .get 我們 並不是 response img image 天氣

一、引言

上篇給大家介紹了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、歷史天氣首頁信息提取