百度貼吧爬蟲 案例練習 GET 請求

2021-08-30 13:37:53 字數 2136 閱讀 3369

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import urllib.request

import urllib.parse

import ssl

get_url = ''

# 全域性取消證書驗證

"""作用:傳送請求,獲得響應

:param search_keywords: 要查詢的關鍵字,

:param num: 要爬取的頁碼數,

:return: response

"""for i in range(num):

full_get_url = get_url % (search_keywords, i*50)

headers_request = urllib.request.request(url=full_get_url, headers=headers)

response = urllib.request.urlopen(headers_request)

# read()方法只能讀一次,第二次,沒有內容了

# 方法一:

# content = response.read().decode("utf-8") # 報錯!

# unicodedecodeerror: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte

# 原因:在headers中新增了'accept-encoding':'gzip, deflate',把它去掉即可。

# 方法二:

# 如果'accept-encoding':'gzip, deflate',新增了,執行以下**可以成功,但是亂碼!!!

# content = response.read().decode("utf-8", errors="replace")

content = response.read().decode("utf-8")

write_to_file(content, i)

def write_to_file(content, i):

"""作用:將響應的頁面儲存在本地

:param content: 伺服器返回的響應頁面,

:param i: 變數

:return: html頁面

"""# open開啟乙個檔案,指定改檔案路徑和檔名,填寫模式,和該檔案的編碼方式,如果mode='wb',就不需要指定encoding

with open("./貼吧第%d頁.html" % (i+1), mode='wb') as fp:

fp.write(content.encode('utf-8'))

print("貼吧第%d頁儲存成功" % (i+1))

if __name__ == '__main__':

search_keywords = input("請輸入要查詢的關鍵字:")

# 方法一:報錯

# search_keywords = urllib.parse.urlencode(search_keywords).encode('utf-8')

# 原因:只有在解析多個詞的時候,用urllib.parse.urlencode().encode() | urlencode()用於post_url

# 方法二:ok

# 如果需要解析單個詞的時候使用urllib.parse.quote() | quote()|unquote() 用於get_url

search_keywords = urllib.parse.quote(search_keywords)

try:

num = int(input("請輸入要爬取多少頁:"))

except exception as e:

print("請輸入數字型資料:")

num = int(input("請輸入要爬取多少頁:"))

load_url_data(search_keywords, num)

百度貼吧爬蟲練習

在互動平台列印貼吧內的的鏈結位址 1 coding utf 823 importre4 import urllib 導入庫56 defgethtml url 7 page urllib.urlopen url 開啟鏈結的頁面 8 html page.read 讀取鏈結的原始碼 正則 13 imgre...

get案例 爬取百度貼吧

需求 爬取貼吧的資料 1.輸入爬取貼吧的主題 列如 火影忍者 2.輸入起始頁和終止頁 列如 3 5 3.把每一頁的資料儲存到本地 列如 第一頁.html 第二頁.html 思路第一頁 第二頁 第三頁 第四頁 pn page 1 50 發起請求 資料 儲存資料 python import urllib...

百度貼吧爬蟲

encoding utf 8 import urllib.request import urllib.parse import time import random def load page url 通過url來獲取網頁內容jfa param url 待獲取的頁面 return url對應的網頁內...