爬虫 - 动态分页抓取 游民星空 的资讯 - bs4

news/2024/7/19 10:01:19 标签: 爬虫, json, python
# coding=utf-8
# !/usr/bin/env python
'''
    author: dangxusheng
    desc  :  动态分页抓取 游民星空 的资讯
    date  : 2018-08-29
'''

import requests
from bs4 import BeautifulSoup
import json
import time


url = "https://www.gamersky.com/news/"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36 Qiyu/2.1.1.1",
    "Referer": "https://www.gamersky.com/news/"
}


# 获取每一页
def once_page_info(page_index=1):
    time_stramp = str(time.time()).replace('.', '')[0:13]
    time_stramp = str(time_stramp)
    # 分页提取
    url = "https://db2.gamersky.com/LabelJsonpAjax.aspx?callback=jQuery18308266280560965529_1541308409652&jsondata=%7B%22type%22%3A%22updatenodelabel%22%2C%22isCache%22%3Atrue%2C%22cacheTime%22%3A60%2C%22nodeId%22%3A%2211007%22%2C%22isNodeId%22%3A%22true%22%2C%22page%22%3A" + str(
        page_index) + "%7D&_=" + time_stramp
    r = requests.get(url, headers=headers)
    # 返回回来的数据,内部是json字符串格式,但是开头和结尾有一部分干扰字符串,去除即可
    now_page_html = json.loads(r.text[41:-2])['body']
    soup = BeautifulSoup(now_page_html, 'html.parser')
    # ul = soup.find('ul', attrs={"class": "pictxt contentpaging"})
    li_list = soup.find_all('li')
    ls = []
    for once_li in li_list:
        once_type = once_li.find('a', attrs={'class': 'dh'}).string
        once_type = once_type if once_type != None else "暂无类型"

        once_title = once_li.find('a', attrs={'class': 'tt'}).string
        once_title = once_title if once_title != None else "暂无标题"

        once_info = once_li.find('div', attrs={'class': 'txt'}).string
        once_info = once_info if once_info != None else "暂无简介"

        once_time = once_li.find('div', attrs={'class': 'time'}).string
        once_visited = once_li.find('div', attrs={'class': 'visit gshit'}).string
        once_comment = once_li.find('div', attrs={'class': 'pls cy_comment'}).string
        once_img_url = once_li.find('img', attrs={'class': 'pe_u_thumb'}).attrs['src']
        ls.append(
            {'type': once_type, 'title': once_title, 'info': once_info, 'time': once_time, 'visited': once_visited,
             'comment': once_comment, 'img_url': once_img_url})
    return ls


# 保存每一个的内容
def save_to_file(all_info):
    with open('./gemersky.txt', 'a', encoding='utf-8') as file:
        for o in all_info:
            # 按照指定格式保存
            file.write("%s::%s::%s::%s::%s::%s::%s\n"%(o['type'],o['title'],o['time'],o['visited'],o['comment'],o['img_url'],o['info']))


for i in range(1, 10):
    page_info = once_page_info(i)
    save_to_file(page_info)
    print('第%i页下载完成' % i)

 

转载于:https://www.cnblogs.com/dxscode/p/9937340.html


http://www.niftyadmin.cn/n/1648776.html

相关文章

go gorilla怎么给某个cid发送消息_带你入门Go语言的消息队列NSQ

以前看到过NSQ这个东西,也一直没去看。今天刚好有时间就搭建了下,简单尝试了下这个Go语言下的消息队列NSQ,我这里简要记录下。其实,NSQ国内用的是比较少的,我这里也是算了解这么个东西吧 ,稍微看下源码&…

php 许愿墙 阶段案例_26个景观设计案例意向效果图参考网站| 国内就能看(最新整理)...

花了我两天时间终于整理出来了,我本科时候就到处求网站,这次全了。做设计最重要的参考借鉴,平时只有多看多积累,参考对比才能养成良好的设计思维和设计习惯。今天为大家推荐三类网站1.案例、意向、资讯网站2.概念表达阶段参考网站…

Python中的zip函数

zip函数的不少资料写的怪麻烦的,反正我查了很多次,都没有记住这个函数是干什么,这导致我造了不少的轮子,走了不少的弯路。 后来再回头查资料,有些明白了。其实zip函数就把几个数组对齐,然后按列输出。。为了…

自动售卖机怎么用微信支付_“支付宝向左,微信支付向右!”自动售货机运营企业选择背后!...

阿里与腾讯间的移动支付战争可以用“旷日持久”来形容,从2013年微信支付上线后,双方间就一直保持着某种拉锯。在自动售货机行业,移动支付战争虽然没有像在其他行业那样表现的如此激烈,但在大的环境影响下,双方终于还是…

转载(生物分析专题网站(很全、实用))

原文链接地址 http://muchong.com/t-1889355-1 一、蛋白的信号肽预测软件: 1、预测有无信号肽: www.cbs.dtu.dk/services/SignalP/ www.stepc.gr/~synaptic/sigfind.html www.bioinformatics.leeds.ac.uk/prot_analysis/Signal.htmlhttp://psort.nibb.ac…

1235813找规律第100个数_名校试卷:一年级数学期末检测卷(5套),提前练,期末冲刺100分...

点击关注了解更多精彩内容!!名校试卷:一年级数学期末检测卷(5套),提前练,期末冲刺100分!暑假假期就要来了,这也表示期末考试也将到来,只有在期末考试中取得一个理想的成绩&#xff0…

晨风机器人突破限制_【创新甄选】联通5G应用系列 | 助力公安移动警务,5G智能巡防机器人来了!...

5G巡防机器人 科技部制定了《“十三五”公共安全科技创新专项规划》,文件要求突破一批重大关键技术;突破超大规模网上网下统一身份管理、人员身份特征精细刻画与识别;突破我国城镇安全的风险评估与安全规划。\ 瓶颈 /*网络服务质量…

python实时数据显示不了_python – Bokeh中的数据工具提示不显示数据,显示’???’代替...

我正在尝试使用Bokeh创建堆积条形图.我想使用悬停功能,在条形的每个部分显示相关数据,但不是数据Bokeh显示’???’.我在名为“Sales”的工作表中获得了名为“Example worksheet”的excel文件中的数据.表格如下:Year Category Sales2016 A 12016 B 12016 C 1.5201…