答疑·限时优惠

如果,你想让我看见你的疑问并且百分之百的回答。可以加入我的知识星球。
AI悦创·进化岛
AI悦创·进化岛

1568439161003

概念了解

现在学前端有些浪费时间了,因为你要发展 Python 网络爬虫 方向,基本上是不用写前端了。如何要做逆向工程,则需学习 JavaScript

1568439274771

语言 解析
HTML HTML 是描述网页的语言,(超文本标记语言),并不是编程语言。
CSS CSS 层叠样式表,用来修饰页面。
JavaScript JavaScript 网络脚本语言,用来和用户进行交互。
合集 HTML 就是类似于骨架,CSS 就类似于给 HTML 穿上衣服。

1568440046844


CSS 、 HTML大家除非有兴趣,不然没必要去学,只要能看懂就好。

重点是在:JavaScript

1568440186148


我个人建议买红色的 JavaScript 比较实用。

1568440299923

Ajax 其实是 JS 的升级版,我们都知道异步编程吧,Python 有异步编程,那 JavaScript 肯定也有异步编程。所以,在 JavaScript 中,它的异步编程就是 Ajax。在 Python 当中的异步编程就叫 :sync。

1568440501270


1568440592074

我们页面不需要刷新,URL 也没有变化,但我们的内容在不断的刷新。

也就是,我们在浏览页面的同时,后面也发起了许多请求。

我们要抓取这样的网站,就要去看的 Json,但是我们前面主要涉及理论知识,后面才有实际操作。

我们要学会原理,如果你只是懂得使用工具而不知道原理是很容易被取代的。

接下来我们找一下接口:右键 >>> 检查 >>> Network,清空,然后重新请求一下:

清空:

1568441189540

1568441269683

然后,你可以不断的滚动页面并观察开发者模式的变化。

我们看一下里面的 preview

1568441450947

可以看到,这里面就是 Json 文件,图片网址也都在里面了。

1568441537650

一遇到这个 Ajax 我们就去找接口就好并观察规律。(找到接口并改变参数就可以咯)

接下来看一下我们要请求的网址是什么:

1568441410029

1568441702261

给你们看一下实现的代码:

1568441741375

看,就是30为间隔哦:

1568441911518

实际爬取:

1568442784754

源代码:

# -*- coding: utf-8 -*-
# @Author     :AI悦创
# @DateTime   :2019/9/14  14:16 
# @FileName   :baidu_image.PY
# @Function   :功能
# Development_tool   :PyCharm
# <-------import data-------------->
# 分析 URL:
# http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord=%E9%BE%99%E5%A5%B3%E4%BB%86&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=0&ic=0&hd=0&latest=0&copyright=0&word=%E9%BE%99%E5%A5%B3%E4%BB%86&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&expermode=&force=&pn=30
# http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord=%E9%BE%99%E5%A5%B3%E4%BB%86&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=0&ic=0&hd=0&latest=0&copyright=0&word=%E9%BE%99%E5%A5%B3%E4%BB%86&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&expermode=&force=&pn=60
# http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord=%E9%BE%99%E5%A5%B3%E4%BB%86&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=0&ic=0&hd=0&latest=0&copyright=0&word=%E9%BE%99%E5%A5%B3%E4%BB%86&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&expermode=&force=&pn=90
import requests
import re
imgs = re.compile('http://img.*?\.jpg')
url = 'http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&' \
      'queryWord=%E9%BE%99%E5%A5%B3%E4%BB%86&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=0&ic=0&hd=0&' \
      'latest=0&copyright=0&word=%E9%BE%99%E5%A5%B3%E4%BB%86&s' \
      '=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&expermode=&force=&pn=30'
def get_json():
    html = requests.get(url)
    # results = re.findall(imgs, html.text)
    results = imgs.findall(html.text)
    print(requests)
    for i in results:
        print(i)

if __name__ == '__main__':
    get_json()


# 输出
"C:\Program Files\Python37\python.exe" D:/daima/pycharm_daima/爬虫大师班/baidu_image.py
<module 'requests' from 'C:\\Program Files\\Python37\\lib\\site-packages\\requests\\__init__.py'>
http://img0.imgtn.bdimg.com/it/u=3046754844,2948369608&fm=26&gp=0.jpg
http://img0.imgtn.bdimg.com/it/u=3046754844,2948369608&fm=26&gp=0.jpg
http://img0.imgtn.bdimg.com/it/u=3046754844,2948369608&fm=26&gp=0.jpg
http://img3.imgtn.bdimg.com/it/u=3049179571,2987741874&fm=26&gp=0.jpg
中间大部分图片链接省略:
    ......

http://img4.imgtn.bdimg.com/it/u=3206361450,4144166066&fm=26&gp=0.jpg
http://img4.imgtn.bdimg.com/it/u=2125255277,1364020877&fm=26&gp=0.jpg
http://img4.imgtn.bdimg.com/it/u=2125255277,1364020877&fm=26&gp=0.jpg
http://img4.imgtn.bdimg.com/it/u=2125255277,1364020877&fm=26&gp=0.jpg
http://img2.imgtn.bdimg.com/it/u=852467031,2928001655&fm=26&gp=0.jpg
http://img2.imgtn.bdimg.com/it/u=852467031,2928001655&fm=26&gp=0.jpg
http://img2.imgtn.bdimg.com/it/u=852467031,2928001655&fm=26&gp=0.jpg

进程已结束,退出代码 0

1568443021582

AI悦创·创造不同!
AI悦创 » 补充:简单普及「阅读即可」

Leave a Reply