爬虫项目(上)

import requests


#获取URL(即目标网站上的数据)
def get_data(url):
    response=requests.get(url,headers=headers)
    r=response.json()
    print(r)


if __name__=='__main__':
    url = 'https://i.news.qq.com/trpc.qqnews_web.kv_srv.kv_srv_http_proxy/list?sub_srv_id=24hours&srv_id=pc&offset=0&limit=20&strategy=1&ext={%22pool%22:[%22top%22,%22hot%22],%22is_filter%22:7,%22check_type%22:true}'
    get_data(url)

首先写入这几行代码

运行之后就是下图的样子,此时是所有的数据,还没有进行解析

写爬虫前要先导入requests 模块

接着写一个函数获取数据 (get_data)

url是网址,即数据是放在这个网址里面的 

复制箭头里的网址即可,由于数据格式是json 形式的,所以本次是用 json  的方法去解析数据

我们要的数据都在XHR里面

接下来就对数据进行解析

from jsonpath import jsonpath
----snip-----
#以上省略
def parse_data(data):
    title=jsonpath(data,'$..title')
    media_name=jsonpath(data,'$..media_name')
    url=jsonpath(data,'$..url')
    for titles,media_names,urls in zip(title,media_name,url):
         print(titles)
         print(media_names)
         print(urls)

if __name__=='__main__':
    data=get_data(url)
    parse_data(data)

首先导入模块   

from jsonpath import jsonpath

输入这几行代码

$表示跟节点,..表示跳过任意层

运行之后出现了这种情况

 我们只需要去修改一下代码就可以了

from jsonpath import jsonpath
import sys


def get_data(url):
    try:
        response=requests.get(url,headers=headers)
        r=response.json()
        return r 
    except:
        sys.setrecursionlimit(5)   #表示最大递归次数为5
        return get_data(url)


def parse_data(data):
    try:
         title=jsonpath(data,'$..title')
          media_name=jsonpath(data,'$..media_name')
          url=jsonpath(data,'$..url')
          for titles,media_names,urls in zip(title,media_name,url):
          print(titles)
          print(media_names)
          print(urls)
    except:
        sys.exit(1)   #终止程序,0为正常退出,(1-127)为不正常退出

if __name__=='__main__':
    data=get_data(url)
    parse_data(data)

修改之后运行,

就能得到我们需要的东西了 

上面写的是一页的数据

接着写翻页

if __name__=='__main__':

     url = 'https://i.news.qq.com/trpc.qqnews_web.kv_srv.kv_srv_http_proxy/list'

     for i in range(0, 181, 20):
        print('正在翻阅参数为{}的页'.format(i))
        datas = {
            'sub_srv_id': '24hours',
            'srv_id': 'pc',
            'offset': '{}'.format(i),
            'limit': '20',
            'strategy': '1',
            'ext': '{"pool":["top","hot"],"is_filter":7,"check_type":true}',}
  
   ----snip----

观察网页上的数据,我们会发现翻页后  offest 的数值会变化,第一页是0,第二页是20

对url 进行修改,把参数提出来放到data中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值