**:
搜尋頭條
可以得到這個**:
search/?keyword=%e8%a1%97%e6%8b%8d
開發者工具檢視:
我們在搜尋中並沒有發現上面的文字,那麼我們可以www.cppcns.com初步判定,這個由ajax載入,然後渲染出來的。此時切換到xhr過濾,可以看到確實是ajaxyviloqszif請求。
觀察請求的特點,發現只有offset是改變的,而且一次加20,。
我們可以用它來控制資料分頁,然後把**下來。**如下:
import requests
import os
from urllib.parse import urlencode
from hashlib import md5
from multiprocessing.pool import pool
from requests import codes
def get_page(offset):
params =
url = 'search_content/?'+urlencode(params)
try:
response = requests.get(url)
if response.status_code == 200:
# print(url)
return response.json()
except requests.connectionerror:
return none
# get_page(0)
def get_images(json):
if json.get('data'):
for item in json.get('data'):
if item.get('cell_type') is not none:
continue
title = item.get('title')
images = item.get('image_list')
for image in images:
yield
def s**e_image(item):
#os.path.sep 路徑分隔符『//'
img_path = 'img' + os.path.sep + item.get(www.cppcns.com'title')
if not os.path.exists(img_path):
os.makedirs(img_path)
try:
resp = requests.get(item.get('image'))
# print(type(resp))
if codes.ok == resp.status_code:
file_path = img_path + os.path.sep + '.'.format(
file_name=md5(resp.content).hexdigest(),#md5是一種加密演算法獲取的二進位制資料,以二進位制形式寫入檔案
pool.map(main,groups) #將groups乙個個調出來傳給main函式
pool.close()
pool.join() #保證子程序結束後再向下執行 pool.join(1) 等待一秒
總結
爬蟲 爬取今日頭條街拍2
import re,json import requests from urllib import request import os defb url headers print url headers response requests.get url,headers headers print...
今日頭條 今日頭條三面面經
一面 1 演算法題,程式設計實現nsum 2 實現元素的居中並且寬高比為3 4 3 實現繼承 4 給了一段 給出輸出結果,這個是和非同步相關 5 http的狀態碼有哪些 6 cookie和session的區別,以及如何生成session 7 給 寫輸出和原型鏈相關 8 變數宣告提公升 三面 1 介紹...
今日頭條筆試
問題描述 給定乙個段落,由 n 個句子組成。第 i 個句子的長度為 l i 包含的單詞個數為 w i 句子不包含任何除字母和空格 外的符號。每個句子內部,含有若干個單詞,由空格 分隔。句子不會包含連續的空格。隨後給定 m 個查詢,每個查詢包含乙個句子,需要在段落中尋找相同單詞數量最多的句子。重複的單...