Python3爬蟲實戰(requests模組)
上次我通過兩個實戰教學展示瞭如何使用urllib模組(http://blog.csdn.net/mr_blued/article/details/79180017)來構造爬蟲,這次告訴大家一個更好的實現爬蟲的模組,requests模組。
使用requests模組進行爬蟲構造時最好先去了解一下HTTP協議與常見的幾種網頁請求方式。
閒話少說,我們進入正題。
使用requests模組改進上次的例子中的程式碼
1.爬取妹子圖。(目標網址:http://www.meizitu.com/)
import requests
import os
import re
import time
def url_open(url):
# 以字典的形式新增請求頭
header = {
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
}
# 使用get方法傳送請求獲取網頁原始碼
response = requests.get(url, headers=header)
return response
def find_imgs(url):
html = url_open(url).text
p = r'<img src="([^"]+\.jpg)"'
img_addrs = re.findall(p, html)
return img_addrs
def download_mm(folder='OOXX'):
os.mkdir(folder)
os.chdir(folder)
page_num = 1 # 設定為從第一頁開始爬取,可以自己改
x = 0 # 自命名圖片
img_addrs = [] # 防止圖片重複
# 只爬取前兩頁的圖片,可改,同時給圖片重新命名
while page_num <= 2:
page_url = url + 'a/more_' + str(page_num) + '.html'
addrs = find_imgs(page_url)
print(len(addrs))
# img_addrs = []
for i in addrs:
if i in img_addrs:
continue
else:
img_addrs.append(i)
print(len(img_addrs))
for each in img_addrs:
print(each)
page_num += 1
# x = (len(img_addrs)+1)*(page_num-1)
for each in img_addrs:
filename = str(x) + '.' + each.split('.')[-1]
x += 1
with open(filename, 'wb') as f:
img = url_open(each).content
f.write(img)
# page_num += 1
if __name__ == '__main__':
url = 'http://www.meizitu.com/'
download_mm()
2.爬取百度貼吧圖片 (目標網址:https://tieba.baidu.com/p/5085123197)
import requests
import re
import os
def open_url(url):
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"}
response = requests.get(url, headers=headers)
return response
def find_img(url):
html = open_url(url).text
p = r'<img class="BDE_Image" src="([^"]+\.jpg)"'
img_addrs = re.findall(p, html)
for each in img_addrs:
print(each)
for each in img_addrs:
file = each.split("/")[-1]
with open(file, "wb") as f:
img = open_url(each).content
f.write(img)
def get_img():
os.mkdir("TieBaTu")
os.chdir("TieBaTu")
find_img(url)
if __name__ == "__main__":
url = 'https://tieba.baidu.com/p/5085123197'
get_img()
總結:
1.熟悉requests模組的方法,以及瞭解http協議和幾種常見的請求方式
2.瞭解網站的反爬蟲策略,並建立相對應的反反爬蟲手段
3.知道其他模組的作用。
爬蟲專案地址:github
相關文章
- 爬蟲——Requests模組爬蟲
- 爬蟲-Requests模組爬蟲
- Python3爬蟲實戰(urllib模組)Python爬蟲
- python爬蟲requests模組Python爬蟲
- python3網路爬蟲開發實戰_Python3 爬蟲實戰Python爬蟲
- [實戰演練]python3使用requests模組爬取頁面內容Python
- Python 爬蟲實戰(二):使用 requests-htmlPython爬蟲HTML
- Python 爬蟲實戰(一):使用 requests 和 BeautifulSoupPython爬蟲
- python3 爬蟲實戰:為爬蟲新增 GUI 影象介面Python爬蟲GUI
- 《Python3網路爬蟲開發實戰》教程||爬蟲教程Python爬蟲
- [Python3網路爬蟲開發實戰] 分散式爬蟲原理Python爬蟲分散式
- Python3網路爬蟲開發實戰Python爬蟲
- 爬蟲之requests庫爬蟲
- python爬蟲:爬蟲的簡單介紹及requests模組的簡單使用Python爬蟲
- python3網路爬蟲開發實戰pdfPython爬蟲
- 爬蟲實戰爬蟲
- Python3 大型網路爬蟲實戰 — 給 scrapy 爬蟲專案設定為防反爬Python爬蟲
- 網路爬蟲——爬蟲實戰(一)爬蟲
- Python3網路爬蟲快速入門實戰解析Python爬蟲
- 《python3網路爬蟲開發實戰》--pyspiderPython爬蟲IDE
- Python Beautiful Soup+requests實現爬蟲Python爬蟲
- 爬蟲實戰scrapy爬蟲
- Python網路爬蟲資料採集實戰:Requests和Re庫Python爬蟲
- python動態網站爬蟲實戰(requests+xpath+demjson+redis)Python網站爬蟲JSONRedis
- python3網路爬蟲開發實戰_Python 3開發網路爬蟲(一)Python爬蟲
- [Python3網路爬蟲開發實戰] Charles 的使用Python爬蟲
- 《Python3網路爬蟲開發實戰》開源啦!Python爬蟲
- [Python3網路爬蟲開發實戰] --Splash的使用Python爬蟲
- 【Python3網路爬蟲開發實戰】3-基本庫的使用 2-使用requests 1-基本用法Python爬蟲
- Python爬蟲教程-06-爬蟲實現百度翻譯(requests)Python爬蟲
- Python requests爬蟲例項Python爬蟲
- 讀書筆記:《Python3網路爬蟲開發實戰》——第2章:爬蟲基礎筆記Python爬蟲
- 我的爬蟲入門書 —— 《Python3網路爬蟲開發實戰(第二版)》爬蟲Python
- 【Python3網路爬蟲開發實戰】3-基本庫的使用 2-使用requests 2-高階用法Python爬蟲
- Puppeteer爬蟲實戰(三)爬蟲
- 爬蟲技術實戰爬蟲
- Python 爬蟲實戰Python爬蟲
- 爬蟲利器 Puppeteer 實戰爬蟲