国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

爬取今日頭條Ajax請求

瀏覽:358日期:2022-06-11 11:18:07

網址:https://www.toutiao.com/

搜索頭條

可以得到這個網址:

開發者工具查看:

我們在搜索中并沒有發現上面的文字,那么我們可以初步判定,這個由Ajax加載,然后渲染出來的。此時切換到xhr過濾,可以看到確實是ajax請求。

觀察請求的特點,發現只有offset是改變的,而且一次加20,。

我們可以用它來控制數據分頁,然后把圖片下載下來。代碼如下:

import requestsimport osfrom urllib.parse import urlencodefrom hashlib import md5from multiprocessing.pool import Poolfrom requests import codesdef get_page(offset):  params = {    "offset":offset,    "format":"json",    "keyword":"街拍",    "autoload":"true",    "count":"20",    "cur_tab":"1",    "from":"search_tab"  }  url = "https://www.toutiao.com/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 {  "title":title,  "image":"https:" + image.get("url"),}def save_image(item):  #os.path.sep  路徑分隔符‘//"  img_path = "img" + os.path.sep + item.get("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 + "{file_name}.{file_suffix}".format(file_name=md5(resp.content).hexdigest(),#md5是一種加密算法獲取圖片的二進制數據,以二進制形式寫入文件file_suffix="jpg")      if not os.path.exists(file_path):with open(file_path,"wb")as f:  f.write(resp.content)  print("Downladed image path is %s" % file_path)      else:print("Already Downloaded",file_path)  except requests.ConnectionError:    print("Failed to Save Image,item %s" % item)def main(offset):  json = get_page(offset)  for item in get_images(json):    print(item)    save_image(item)GROUP = 0GROUP_END = 2if __name__ == "__main__":  pool = Pool()  groups = ([x*20 for x in range(GROUP,GROUP_END)])  pool.map(main,groups)  #將groups一個個調出來傳給main函數  pool.close()  pool.join()   #保證子進程結束后再向下執行 pool.join(1) 等待一秒

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對的支持。如果你想了解更多相關內容請查看下面相關鏈接

標簽: Ajax
相關文章:
主站蜘蛛池模板: 久草在线视频免费看 | 久草首页在线观看 | 97se亚洲综合在线韩国专区福利 | 香蕉久久久久 | 久久精品免费观看 | 成人看的一级毛片 | 97欧美精品一区二区三区 | gay毛片| 97视频网站 | 一级毛片免费观看视频 | 亚洲国产欧美精品 | 日本a级毛片视频播放 | 日韩一级特黄毛片在线看 | 精品视自拍视频在线观看 | 孕妇孕妇aaaaa级毛片视频 | 亚洲性欧美 | 寡妇野外啪啪一区二区 | 在线免费观看日本视频 | 国产精品1区2区 | 高清视频一区 | 国产丝袜不卡一区二区 | 国产伦精一区二区三区 | 欧美一级鲁丝片免费看 | 香蕉久久综合精品首页 | 久久精品国产99国产精品 | 国产精品久久一区二区三区 | 办公室紧身裙丝袜av在线 | vvvv99日韩精品亚洲 | 亚洲精品中文字幕一区在线 | 高清精品一区二区三区一区 | 一本色道久久88加勒比—综合 | 2022国产精品自拍 | 国产特黄一级毛片特黄 | 日本阿v视频在线观看高清 日本波多野结衣视频 | 精品日韩在线视频一区二区三区 | 中国日本高清免费视频网 | 九九福利视频 | 爱视频福利广场 | 亚洲第一欧美 | 国产激情视频在线播放 | 欧美aaaa在线观看视频免费 |