生活随笔
收集整理的這篇文章主要介紹了
Python 网络爬虫笔记2 -- Requests库实战
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Python 網絡爬蟲筆記2 – Requests庫實戰
Python 網絡爬蟲系列筆記是筆者在學習嵩天老師的《Python網絡爬蟲與信息提取》課程及筆者實踐網絡爬蟲的筆記。
課程鏈接:Python網絡爬蟲與信息提取
參考文檔:
Requests 官方文檔(英文)
Requests 官方文檔(中文)
Beautiful Soup 官方文檔
re 官方文檔
Scrapy 官方文檔(英文)
Scrapy 官方文檔(中文)
1、Robots 協議
作用: 網站告知網絡爬蟲哪些頁面可以抓取,哪些不行
形式: 在網站根目錄下的robots.txt文件
Robots協議基本語法:
- User-agent:訪問對象,*代表所有
- Disallow:不予許爬取的目錄,/代表根目錄
# 京東Robots 協議:https://www.jd.com/robots.txtUser-agent: *
Disallow: /?*
Disallow: /pop/*.html
Disallow: /pinpai/*.html?*
User-agent: EtaoSpider
Disallow: /
User-agent: HuihuiSpider
Disallow: /
User-agent: GwdangSpider
Disallow: /
User-agent: WochachaSpider
Disallow: /
2、京東商品頁面的爬取
- 訪問京東網站,獲取所要爬取商品的url鏈接
- 使用爬取網頁的通用代碼框架
import requestsdef get_html_text(url):"""爬取網頁的通用代碼框架"""try:r = requests.get(url, timeout=30)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:return '產生異常'def jd_goods():"""爬取京東上的某個商品,以華為 mate20 為例"""url = 'https://item.jd.com/100000822981.html'print(get_html_text(url))
3、亞馬遜商品頁面的爬取
- 訪問亞馬遜網站,獲取所要爬取商品的url鏈接
- 亞馬遜會拒絕非瀏覽器的請求,需修改url頭部,偽裝成瀏覽器發送請求
- 修改爬取網頁的通用代碼框架
import requestsdef amazon_goods():"""爬取京東上的某個商品,以Kindle為例"""url = 'https://www.amazon.cn/gp/product/B07746N2J9'try:hd = {'user-agent': 'Mozilla/5.0'}r = requests.get(url, headers=hd)r.raise_for_status()r.encoding = r.apparent_encodingprint(r.text[0:1000])except:print('爬取失敗')if __name__ == '__main__':amazon_goods()
4、百度/360搜索關鍵字提交
- 百度的關鍵詞接口:http://www.baidu.com/s?wd=keyword
- 360的關鍵詞接口:http://www.so.com/s?q=keyword
import requestsdef baidu_search():"""使用百度搜索引擎,提交關鍵詞查詢"""url = 'http://www.baidu.com/s'try:kv = {'wd': 'python'}r = requests.get(url, params=kv)r.raise_for_status()r.encoding = r.apparent_encodingprint(r.text)except:print('爬取失敗')if __name__ == '__main__':baidu_search()
5、網絡圖片的爬取和存儲
- 獲取圖片的url鏈接
- 設置圖片保存路徑
- 下載圖片并保存
import requests
import osdef download_image():"""爬取圖片,以百度的logo為例"""url = 'https://www.baidu.com/img/bd_logo1.png'root = 'E:/pics/'path = root + url.split('/')[-1]try:if not os.path.exists(root):os.mkdir(root)if not os.path.exists(path):r = requests.get(url)with open(path, 'wb') as f:f.write(r.content)f.close()print('圖片保存成功')else:print('圖片已存在')except:print('爬取失敗')if __name__ == '__main__':download_image()
6、IP地址歸屬地查詢
- 138 IP地址歸屬地查詢接口:http://m.ip138.com/ip.asp?ip=ipaddress
- 查詢百度網站的ip地址,在cmd中輸入:nslookup www.baidu.com
import requestsdef ip_attribution():"""IP地址歸屬地查詢, 使用138的接口查詢百度的IP歸屬地"""url = 'http://m.ip138.com/ip.asp?ip='ip = '14.215.177.39'try:r = requests.get(url+ip, timeout=30)r.raise_for_status()r.encoding = r.apparent_encodingprint(r.text)except:print('查詢失敗')if __name__ == '__main__':ip_attribution()
總結
以上是生活随笔為你收集整理的Python 网络爬虫笔记2 -- Requests库实战的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。