爬取今日頭條Ajax請求

2022-09-20 22:51:19 字數 2271 閱讀 4065

**:

搜尋頭條

可以得到這個**:

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 個查詢,每個查詢包含乙個句子,需要在段落中尋找相同單詞數量最多的句子。重複的單...