用Ajax爬取今日头条图片集

 

Ajax原理

  在用requests抓取页面时,得到的结果可能和浏览器中看到的不一样:在浏览器中可以正常显示的页面数据,但用requests得到的结果并没有。这是因为requests获取的都是原始 HTML文档,而浏览器中页面
则是经过Ajax处理数据后生成的。这些数据可能在HTML文档中,也可能是经过JavaScript和特定算法后生成的。
  刚开始HTML文档中不包含某些数据,当原始页面加载完后,会向服务器发送Ajax请求获取数据,这些数据被JavaScript处理形成一些新页面。

  Ajax: 即异步的JavaScript和XML,是利用JavaScript在保证页面不刷新、链接不改变的情况下与服务器交换数据的并更新
部分网页的技术。

示例:用Ajax爬取今日头条图片

最近想买工装裤穿,可又不知道怎么搭配,所以就用爬虫爬下头条上工装裤的穿搭图片啦

(1) 获取网页页面的JSON文档
import os import requests from urllib.parse import urlencode           #来构造url参数的 from hashlib import md5                      #用来解析图片二进制的  #获取页面json def get_page(offest):     params={             'aid':'24',             'offest':offest,             'format':'json',             'keyword':'%E5%B7%A5%E8%A3%85%E8%A3%A4',             'autoload':'true',             'count':'20',             'cur_tab':'1',             'from':'search_tab',             'pd':'synthesis'             }     url='upload/201902131558566754.jpg中                     f.write(response.content)             else:                 print('Already Download',file_path)     except requests.ConnectionError:         print('Failed to save image') 

注意:
1)这里的item就是(2)中得到的包含url和标题的字典
1)是以二进制写的方式存入文件,'wb'

(4)构造offest 进行遍历
def main(offest):     json=get_page(offest)     for item in parse_page(json):         print(item)         save_image(item)  if __name__=='__main__':     for i in range(0,4):         offest=i*20         main(offest) 
PS:代码叙述有不完整的地方,欢迎大家私信我。完整代码链接https://github.com/xubin97
 
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信