Python爬虫-04:贴吧爬虫以及GET和POST的区别
生活随笔
收集整理的這篇文章主要介紹了
Python爬虫-04:贴吧爬虫以及GET和POST的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 1. URL的組成
- 2. 貼吧爬蟲
- 2.1. 只爬貼吧第一頁
- 2.2. 爬取所有貼吧的頁面
- 3. GET和POST的區別
- 3.1. GET請求
- 3.2. POST請求
- 3.3. 有道翻譯模擬發送POST請求
1. URL的組成
漢字通過URL encode(UTF-8)編碼出來的編碼,里面的字符全是打字節
如果你復制粘貼下來這個網址,出來的不是漢字,而是編碼后的字節
https://www.baidu.com/s?wd=%E7%BC%96%E7%A8%8B%E5%90%A7
我們也可以在python中做轉換-urllib.parse.urlencode
import urllib.parse.urlencode url = "http://www.baidu.com/s?" wd = {"wd": "編程吧"} out = urllib.parse.urlencode(wd) print(out)結果是: wd=%E7%BC%96%E7%A8%8B%E5%90%A7
2. 貼吧爬蟲
2.1. 只爬貼吧第一頁
import urllib.parse import urllib.requesturl = "http://www.baidu.com/s?" keyword = input("Please input query: ")wd = {"wd": keyword} wd = urllib.parse.urlencode(wd)fullurl = url + "?" + wd headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"} request = urllib.request.Request(fullurl, headers = headers) response = urllib.request.urlopen(request) html = response.read()print(html)2.2. 爬取所有貼吧的頁面
對于一個貼吧(編程吧)爬蟲,可以翻頁,我們可以總結規律
page 1: http://tieba.baidu.com/f?kw=%E7%BC%96%E7%A8%8B&ie=utf-8&pn=0 page 2: http://tieba.baidu.com/f?kw=%E7%BC%96%E7%A8%8B&ie=utf-8&pn=50 page 3: http://tieba.baidu.com/f?kw=%E7%BC%96%E7%A8%8B&ie=utf-8&pn=100 import urllib.request import urllib.parsedef loadPage(url,filename):"""作用: url發送請求url:地址filename: 處理的文件名"""print("正在下載", filename)headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"}request = urllib.request.Request(url, headers=headers)response = urllib.request.urlopen(request)html = response.read()return htmldef writePage(html,filename):"""作用:將html內容寫入到本地html:服務器響應文件內容"""print("正在保存",filename)with open(filename, "wb") as f:f.write(html)print("-"*30)def tiebaSpider(url, beginPage, endPage):"""作用:貼吧爬蟲調度器,復制組合處理每個頁面的url"""for page in range(beginPage, endPage + 1):pn = (page - 1) * 50filename = "第" + str(page) + "頁.html"fullurl = url + "&pn=" + str(pn)html = loadPage(fullurl,filename)writePage(html,filename)if __name__ == "__main__":kw = input("Please input query: ")beginPage = int(input("Start page: "))endPage = int(input("End page: "))url = "http://tieba.baidu.com/f?"key = urllib.parse.urlencode({"kw":kw})fullurl = url + keytiebaSpider(fullurl, beginPage, endPage)結果是:
Please input query: 編程吧 Start page: 1 End page: 5 正在下載 第1頁.html 正在保存 第1頁.html ------------------------------ 正在下載 第2頁.html 正在保存 第2頁.html ------------------------------ 正在下載 第3頁.html 正在保存 第3頁.html ------------------------------ 正在下載 第4頁.html 正在保存 第4頁.html ------------------------------ 正在下載 第5頁.html 正在保存 第5頁.html ------------------------------3. GET和POST的區別
- GET: 請求的url會附帶查詢參數
- POST: 請求的url不會
3.1. GET請求
對于GET請求:查詢參數在QueryString里保存
3.2. POST請求
對于POST請求: 茶韻參數在WebForm里面
3.3. 有道翻譯模擬發送POST請求
結果如下:
Please input english: hello b' {"type":"EN2ZH_CN","errorCode":0,"elapsedTime":1,"translateResult":[[{"src":"hello","tgt":"\xe4\xbd\xa0\xe5\xa5\xbd"}]]}\n'轉載于:https://www.cnblogs.com/haochen273/p/10220816.html
總結
以上是生活随笔為你收集整理的Python爬虫-04:贴吧爬虫以及GET和POST的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS - Tools Using's
- 下一篇: 根据id/类名/元素名称查找元素