python爬虫抓取google_[转载]【爬虫】chrome抓包——抓取动态网站

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

【转载自雨敲窗的博客,侵删雨敲窗的博客】

经过前几节课的学习,糗事百科那种静态网页相信你已经可以轻松搞定了。但是我们经常会遇到一些右键查看源码无法抓取的网站,举个栗子: 美食

我们可以看到,点击第二页第三页,url根本没变。右键查看源码也找不到这些菜,这就是个动态网页。

怎么破?抓包大法好!

google chrome 抓包大法

这个时候我们再点击第二页(现在在第三页)

这才是真正的url

我们去访问这个url,有惊喜

返回了一个json格式的字符串(像不像输出了python中的dict)

经过我们这么一系列的抓包,找到了真正的url,我们直接抓取这个url就可以了,其他的步骤和静态网页一样,抓取下来之后进行数据解析。

json数据解析

记住两个函数!

json.loads

json字符串转成dict

>>> import json

>>> json_str = '{"a":1, "name": "b"}'

>>> json.loads(json_str)

{'a': 1, 'name': 'b'}

json.dumps

dict转成json字符串

>>> json_dict = {"a": 1, "name": "b"}

>>> json.dumps(json_dict)

'{"a": 1, "name": "b"}'

抓取百度美食 python3

import requests

import re

import json

def crawl(page):

pn = page * 8

url = "https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?resource_id=6875&from_mid=1&&format=json&ie=utf-8&oe=utf-8&query=%E7%BE%8E%E9%A3%9F&sort_key=&sort_type=1&stat0=&stat1=&stat2=&stat3=&pn=" + str(pn) + "&rn=8&cb=jQuery110200319478991186668_1472651805605&_=1472651805613"

res = requests.get(url)

json_str_re = re.compile("{.*}")

json_str = json_str_re.search(res.text).group()

food_dict = json.loads(json_str)

for food in food_dict["data"][0]["disp_data"]:

print(food["ename"])

if __name__ == '__main__':

crawl(1)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值