#!/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對應的網頁內...