適合男孩子的python爬蟲
編寫程式:
獲得json檔案:
首先請求最開始的頁面: %E7%BE%8E%E5%A5%B3
但是我們不能這樣直接把頁面交給requests庫直接幹,因為這是一個ajax介面,如果不加入引數,很可能讓你輸入什麼驗證碼還是拉動驗證條什麼,反正就是很麻煩,那我們就加入引數,具體措施如下:
def get_page(offset): # offset偏移,因為每個ajax都是載入固定的頁面數
# 這裡是20,在第三點圖上可以看得到
global headers # 全域性變數 我後面還要用
headers = {
'cookie': 'tt_webid=6821518909792273933; WEATHER_CITY=%E5%8C%97%E4%BA%AC; SLARDAR_WEB_ID=b4a776dd-f454-43c6-81cd-bd37cb5fd0ec; tt_webid=6821518909792273933; csrftoken=4a2a6afcc9de4484af87a2ff8cba0638; ttcid=8732e6def0484fae975c136222a44f4932; s_v_web_id=verify_k9o5qf2w_T0dyn2r8_X6CE_4egN_9OwH_CCxYltDKYSQj; __tasessionId=oxyt6axwv1588341559186; tt_scid=VF6tWUudJvebIzhQ.fYRgRk.JHpeP88S02weA943O6b6-7o36CstImgKj1M3tT3mab1b',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36 Edg/81.0.416.68',
'referer': '%E7%BE%8E%E5%A5%B3',
'x-requested-with': 'XMLHttpRequest'
} # 頭資訊 加入引數
params = {
'aid': ' 24',
'app_name': ' web_search',
'offset': offset,
'format': ' json',
'keyword': ' 美女',
'autoload': ' true'
'count': ' 20
'en_qc': ' 1',
'cur_tab': ' 1',
'from': ' search_tab',
'pd': ' synthesis',
'timestamp': int(time.time())
url = ' + urlencode(params) # 構造url, 使用到了urlencode() 函式
} function(){ // 外匯術語
url = url.replace('=+', '=') # 這裡必須注意現在的網址根本不一樣
# print(url)
try:
r = requests.get(url, headers=headers, params=params)
r.content.decode('utf-8')
if r.status_code == 200:
return r.json() # 返回json格式 因為全是字典型別
except requests.ConnectionError as e:
print(e)
這裡必須注意一點,請求的網址已經改掉了,我在程式碼裡面給瞭解釋,仔細看看。
獲得標題和網址:
def get_image(json): # 獲取圖片
if json.get('data'): # 如果這個存在
for item in json.get('data'):
if item.get('title') is None:
continue # 如果標題是空值
title = item.get('title') # 獲取標題
if item.get('article_url') == None:
continue
url_page = item.get('article_url')
# print(url_page)
rr = requests.get(url_page, headers=headers)
if rr.status_code == 200:
pat = '<script>var BASE_DATA = .*?articleInfo:.*?content:(.*?)groupId.*?;</script>' # 用正則大致匹配一下範圍
match = re.search(pat, rr.text, re.S)
if match != None:
result = re.findall(r'img src=\\"(.*?)\\"', match.group(), re.S)
# print(i.encode('utf-8').decode('unicode_escape')
# 轉換編碼方式 把\u之類的改掉
yield {
'title': title,
'image': result
}
這裡獲取的網頁連結都是Unicode格式的,在後面的下載部分,我給了修改方案,這也是一個暗坑。
下載圖片:
def save_image(content):
path = 'D://今日頭條美女//' # 目錄
if not os.path.exists(path): # 建立目錄
os.mkdir(path)
os.chdir(path)
else:
os.chdir(path)
# ------------------------------------------
if not os.path.exists(content['title']): # 建立單個資料夾
if '\t' in content['title']: # 以title為標題建立單個資料夾
title = content['title'].replace('\t', '') # 去除特殊符號 不然建立不了檔名稱
os.mkdir(title + '//')
os.chdir(title + '//')
print(title)
else:
title = content['title']
os.mkdir(title + '//') # 建立資料夾
os.chdir(title + '//')
print(title)
else: # 如果存在
if '\t' in content['title']: # 以title為標題建立單個資料夾
title = content['title'].replace('\t', '') # 去除特殊符號 不然建立不了檔名稱
os.chdir(title + '//')
print(title)
else:
title = content['title']
os.chdir(title + '//')
print(title)
for q, u in enumerate(content['image']): # 遍歷圖片地址列表
u = u.encode('utf-8').decode('unicode_escape')
# 先編碼在解碼 獲得需要的網址連結
# 開始下載
r = requests.get(u, headers=headers)
if r.status_code == 200:
# file_path = r'{0}/{1}.{2}'.format('美女', q, 'jpg') # 檔案的名字和地址,用三目運算子來除錯資料夾的名字
# hexdisgest() 返回十六進位制圖片
with open(str(q) + '.jpg', 'wb') as fw:
fw.write(r.content)
print(f'該系列----->下載{q}張')
在U變數的時候進行了編碼在解碼操作,然後網址就正常很多了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2690168/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python為什麼叫爬蟲?Python為什麼適合寫爬蟲?Python爬蟲
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~Python爬蟲
- Python爬蟲為什麼需要海外HTTP代理?怎麼挑選適合的?Python爬蟲HTTP
- 【python爬蟲】python爬蟲demoPython爬蟲
- 如何測試該海外HTTP代理適合爬蟲使用?HTTP爬蟲
- python爬蟲---網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞Python爬蟲網頁網站
- Java爬蟲與Python爬蟲的區別?Java爬蟲Python
- python就是爬蟲嗎-python就是爬蟲嗎Python爬蟲
- Python爬蟲之路-chrome在爬蟲中的使用Python爬蟲Chrome
- Python爬蟲(1.爬蟲的基本概念)Python爬蟲
- python 爬蟲Python爬蟲
- python爬蟲Python爬蟲
- Python爬蟲的用途Python爬蟲
- Python爬蟲之路-selenium在爬蟲中的使用Python爬蟲
- 不踩坑的Python爬蟲:Python爬蟲開發與專案實戰,從爬蟲入門 PythonPython爬蟲
- Python爬蟲教程-01-爬蟲介紹Python爬蟲
- python爬蟲初探--第一個python爬蟲專案Python爬蟲
- python爬蟲的最佳實踐(六)--爬蟲中的多程式Python爬蟲
- Python爬蟲:一些常用的爬蟲技巧總結Python爬蟲
- Python 爬蟲的工具鏈Python爬蟲
- Python爬蟲更多的功能Python爬蟲
- Python 爬蟲的工具列表Python爬蟲
- Python asyncio 爬蟲Python爬蟲
- python爬蟲2Python爬蟲
- Python爬蟲——XPathPython爬蟲
- Python 爬蟲系列Python爬蟲
- Python爬蟲-xpathPython爬蟲
- Python爬蟲--2Python爬蟲
- python爬蟲如何爬知乎的話題?Python爬蟲
- python網路爬蟲_Python爬蟲:30個小時搞定Python網路爬蟲視訊教程Python爬蟲
- 什麼是Python爬蟲?python爬蟲入門難嗎?Python爬蟲
- python爬蟲是什麼?學習python爬蟲難嗎Python爬蟲
- 什麼是Python爬蟲?Python爬蟲常用框架有哪些?Python爬蟲框架
- 【Python爬蟲9】Python網路爬蟲例項實戰Python爬蟲
- Python爬蟲入門教程 50-100 Python3爬蟲爬取VIP視訊-Python爬蟲6操作Python爬蟲
- 【python--爬蟲】彼岸圖網高清桌布爬蟲Python爬蟲
- 什麼是爬蟲?Python爬蟲框架有哪些?爬蟲Python框架
- 【爬蟲】python爬蟲從入門到放棄爬蟲Python