這次的爬蟲訓練是對豆瓣top250資訊的爬取,比較簡單的靜態頁面的爬取,本人也是初學者,為了防止學習的困難,我盡量寫的詳細點,建議先把**複製一遍,看能不能成功執行,再過來看,免得到時候全部看完了,**不能執行,到時候自己解決也是蠻麻煩的,畢竟爬蟲更新換代也是蠻快的
對豆瓣top250所有資訊進行爬取,包括影名、格言、評分,先存為.csv檔案,最後轉為excel**儲存
requests庫,lxml解析庫,csv檔案儲存
1.進入到豆瓣top250主介面,進行如下操作,基本得到了我們需要資訊的原始碼
2.分析每一頁的url,找出相應規律
第一頁:
第二頁:
我們發現start=0和start=25有所不同,其餘都是一樣的,我們陸續檢視後面幾頁url,發現start的值以25遞增,由此我們可以推出各頁的url
有部分注釋
import requests
import csv
from lxml import etree
# 得到第i頁的源**
defget_resource
(page)
:# 傳入引數為頁數
headers =
# 設定請求頭
page_head=page*
25 page_url =
''% page_head # 得到每頁的url
try:
response = requests.get(page_url, headers=headers)
# 加個請求頭,偽裝一下,否則會被識別出來,具體錯誤可看返回的狀態碼
response.raise_for_status(
)# 若返回狀態碼不是200,則丟擲異常
except exception as e:
print
('爬取失敗'
)else
:return response.text # 爬取成功,則返回該頁原始碼資訊
#資訊處理,並寫入csv檔案
defhandle_info
(i,selector)
: selector = etree.html(selector)
# 構造乙個xpath解析物件
number = selector.xpath(
'//em/text()'
) name = selector.xpath(
'//span[@class="title"][1]/text()'
) motto = selector.xpath(
'//span[@class="inq"]/text()'
) score = selector.xpath(
'//span[@class="rating_num"]/text()'
)# 多次除錯後,發現第240,242,247,250個沒有格言,我們把其設定為空,否則後面會亂
# 第九頁,它們的motto下標分別為 14,16,21,24
if i==9:
motto.insert(14,
" ")
; motto.insert(16,
" ")
; motto.insert(21,
" ")
; motto.insert(24,
" ")
;for m in
range(25
):all_info =
[number[m]
, name[m]
, motto[m]
, score[m]
]# 形成列表,後面插入
with
open
('douban_top250.csv'
,'a+'
, newline=
'', encoding=
'utf-8'
)as csvfile:
writer = csv.writer(csvfile)
writer.writerow(all_info)
# 按行寫入
if __name__==
'__main__'
:# 寫入第一行,確定每列名稱
with
open
('data.csv'
,'w'
, newline=
'', encoding=
'utf-8'
)as csvfile:
writer = csv.writer(csvfile)
writer.writerow(
['number'
,'name'
,'motto'
,'score'])
# 一共10頁
for i in
range(0
,10):
selector=get_resource(i)
handle_info(i,selector)
解決excel開啟csv檔案亂碼,並儲存為excel檔案
pycharm中開啟csv檔案:
excel檔案:
本程式中對lxml未得到的格言,手動查詢,以空格賦值,不是很恰當,我也是想不出什麼好辦法,才這麼寫的,有其他解決辦法,望告知!
Python爬蟲入門(2) 爬蟲基礎了解
爬蟲,即網路爬蟲,大家可以理解為在網路上爬行的一直蜘蛛,網際網路就比作一張大網,而爬蟲便是在這張網上爬來爬去的蜘蛛咯,如果它遇到資源,那麼它就會抓取下來。想抓取什麼?這個由你來控制它咯。比如它在抓取乙個網頁,在這個網中他發現了一條道路,其實就是指向網頁的超連結,那麼它就可以爬到另一張網上來獲取資料。...
爬蟲入門 2
一 bs4的功能與使用 成功 from bs4 import beautifulsoup import requests r requests.get demo r.text soup beautifulsoup demo,html.parser print soup.prettify 有層次感的輸...
Python爬蟲入門
今天看了菜鳥教程的python教程,準備做個小作業寫個爬蟲程式。其中主要涉及到基本語法 正規表示式 urllib和re兩個模組。import urllib 載入模組 import re defgethtml url page urllib.urlopen url html page.read ret...