來啦,老弟
創新互聯主營甘州網站建設的網絡公司,主營網站建設方案,APP應用開發,甘州h5小程序開發搭建,甘州網站營銷推廣歡迎甘州等地區企業咨詢
我們已經知道怎么使用
Requests]
進行各種請求騷操作
也知道了對服務器返回的數據如何使用
正則表達式
來過濾我們想要的內容
...
那么接下來
我們就使用 requests 和 re 來寫一個爬蟲
作為一個愛看書的你(說的跟真的似的)
怎么能發現好書呢?
所以我們
爬取當當網的前 500本好五星評書籍
怎么樣?
ok
接下來就是
學習 python 的正確姿勢
請在電腦的陪同下
邊看本文邊練習
首先我們要對我們的目標網站進行分析
先摸清對方的底
我們才能戰無不勝
打開這個書籍排行榜的地址
http://bang.dangdang.com/books/fivestars/01.00.00.00.00.00-recent30-0-0-1-1
我們可以看到是這樣的一個網頁
每一頁顯示 20 本書
當我們點擊下一頁的時候
你可以發現地址變了
http://bang.dangdang.com/books/fivestars/01.00.00.00.00.00-recent30-0-0-1-2
也就是我們翻到第幾頁的時候
鏈接地址的最后一個參數會跟著變
那么我們等會在 python 中可以用一個變量
來實現獲取不同頁數的內容
接著
用我們之前說的 Chrome 騷操作
來分析一下
我們要的內容是怎么請求的
以及
返回給我們的源代碼是什么樣的
可以看到
我們通過 GET 請求
我們的請求頭
這是服務器返回來的數據
接著我們再來分析一下我們要抓取的關鍵信息
我們要的就是前 500 本書的
排名
書名
圖片地址
作者
推薦指數
五星評分次數
價格
通過源碼我們可以看到
這些信息被放在了 <li> 標簽中
那么我們等會就可以使用
來進行過濾我們要的信息
一頓分析完了之后
接下來擼代碼了
主要思路
使用 page 變量來實現翻頁
我們使用 requests 請求當當網
然后將返回的 HTML 進行正則解析
由于我們暫時還沒學到數據庫
所以解析完之后就把內容存到文件中。學習過程中有不懂的可以加入我們的學習交流秋秋圈784中間758后面214,與你分享Python企業當下人才需求及怎么從零基礎學習Python,和學習什么內容。相關學習視頻資料、開發工具都有分享
?
def main(page):
url = 'http://bang.dangdang.com/books/fivestars/01.00.00.00.00.00-recent30-0-0-1-' + str(page)
html = request_dandan(url)
items = parse_result(html) # 解析過濾我們想要的信息
for item in items:
write_item_to_file(item)
?
請求當當網
當我們請求成功之后
拿到源代碼
?
def request_dandan(url):
try:
response = requests.get(url)
if response.status_code == 200:
return response.text
except requests.RequestException:
return None
?
拿到源代碼了
就要對其解析
使用正則表達式獲取我們想要的關鍵信息
獲取到了之后我們封裝一下數據
?
def parse_result(html):
pattern = re.compile('<li>.*?list_num.*?(\d+).</div>.*?<img src="(.*?)".*?class="name".*?title="(.*?)">.*?class="star">.*?class="tuijian">(.*?)</span>.*?class="publisher_info">.*?target="_blank">(.*?)</a>.*?class="biaosheng">.*?<span>(.*?)</span></div>.*?<p><span\sclass="price_n">¥(.*?)</span>.*?</li>',re.S)
items = re.findall(pattern,html)
for item in items:
yield {
'range': item[0],
'iamge': item[1],
'title': item[2],
'recommend': item[3],
'author': item[4],
'times': item[5],
'price': item[6]
}
?
打印一下看看結果
?
for item in items:
print(item)
?
可以看到這樣的數據
沒毛病
現在我們獲取的是第 1 頁的數據
如何自動獲取 25 頁 500 條數據呢
來個 for 循環唄
?
if __name__ == "__main__":
for i in range(1,26):
main(i)
?
獲取完 500 本書的數據之后
存到 book.txt 文件
?
def write_item_to_file(item):
print('開始寫入數據 ====> ' + str(item))
with open('book.txt', 'a', encoding='UTF-8') as f:
f.write(json.dumps(item, ensure_ascii=False) + '\n')
f.close()
?
完成
項目跑起來,學習過程中有不懂的可以加入我們的學習交流秋秋圈784中間758后面214,與你分享Python企業當下人才需求及怎么從零基礎學習Python,和學習什么內容。相關學習視頻資料、開發工具都有分享
打開我們存儲的 book.txt 看看
前 500 本書的數據就被我們拿到啦
標題名稱:Python第一個爬蟲,爬取當當網Top500本五星好評書籍
網站路徑:http://www.hntjjpw.com/article36/goigsg.html
成都網站建設公司_創新互聯,為您提供App設計、建站公司、網站營銷、響應式網站、網站導航、服務器托管
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯