天天看點

【Python】從0開始寫爬蟲——小試身手

先寫個demo擷取資料,我不會做太多介紹,基本上都會寫在注釋裡。

header 的資料一般就是在浏覽器的調試工具裡,有的網站通路需要登陸,就要加cookie。像Chrome的調試工具 快捷鍵是F12. 去到新浪首頁,按F12調出開發者工具,然後重新整理。在Network下拉到最上面就能看到一開始的請求資訊(我之前是做java web的,略微會一點。)

【Python】從0開始寫爬蟲——小試身手

import urllib.request

header = {
    'User-Agent':
        'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36',
}
url = "http://www.sina.com"

request = urllib.request.Request(url=url, headers=header)  # url為爬取的連結,headers主要是假裝我們不是爬蟲,現在我們就假裝我們是個Chrome浏覽器

response = urllib.request.urlopen(request)  # 請求資料

data = response.read()  # 讀取傳回的資料

data.decode("UTF-8")  # 設定字元格式為utf-8,可以進行中文      

然後控制台會列印出一段html,就是新浪的首頁,資料太多就不發了,發一部分截圖。

【Python】從0開始寫爬蟲——小試身手

然後我們用BeautifulSoup試着解析一下。

先導入BeautifulSoup, 一般都是加在最上面

import urllib.request
from bs4 import BeautifulSoup      

然後在最後面把 print(data) 那句去掉加上

soup = BeautifulSoup(data, "html.parser")  # 把html轉換成BeautifulSoup對象,這樣我們就可以用BeautifulSoup的方法來解析html

print(soup)  # 列印      

控制台輸出如下

【Python】從0開始寫爬蟲——小試身手

然後我們可以

print(soup.title)  # 列印标題

print(soup.find_all("a"))  # 列印所有a标簽      

控制台輸出, 因為find_all("a")  會找出所有的a标簽,是以輸出很多

【Python】從0開始寫爬蟲——小試身手

現在就得去了解BeautifulSoup更多的知識,以便我們能更加快速得擷取我們想要得資訊。

忘了貼一下完整的代碼

import urllib.request
from bs4 import BeautifulSoup

header = {
    'User-Agent':
        'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'
}
url = "http://www.sina.com"

request = urllib.request.Request(url=url, headers=header)  # url為爬取的連結,headers主要是假裝我們不是爬蟲,現在我們就假裝我們是個Chrome浏覽器

response = urllib.request.urlopen(request)  # 請求資料

data = response.read()  # 讀取傳回的資料

data.decode("UTF-8")  # 設定字元格式為utf-8,可以進行中文

soup = BeautifulSoup(data, "html.parser")  # 把html轉換成BeautifulSoup對象,這樣我們就可以用BeautifulSoup的方法來解析html

print(soup.title)  # 列印标題

print(soup.find_all("a"))  # 列印所有a标簽