# 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)

爬虫 - 动态分页抓取 游民星空 的资讯 - bs4的更多相关文章

  1. python网络爬虫-动态网页抓取(五)

    动态抓取的实例 在开始爬虫之前,我们需要了解一下Ajax(异步请求).它的价值在于在与后台进行少量的数据交换就可以使网页实现异步更新. 如果使用Ajax加载的动态网页抓取,有两种方法: 通过浏览器审查 ...

  2. Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过Selenium模拟浏览器抓取

    区别于上篇动态网页抓取,这里介绍另一种方法,即使用浏览器渲染引擎.直接用浏览器在显示网页时解析 HTML.应用 CSS 样式并执行 JavaScript 的语句. 这个方法在爬虫过程中会打开一个浏览器 ...

  3. [Python]爬取 游民星空网站 每周精选壁纸(1080高清壁纸) 网络爬虫

    一.检查 首先进入该网站的https://www.gamersky.com/robots.txt页面 给出提示: 弹出错误页面 注: 网络爬虫:自动或人工识别robots.txt,再进行内容爬取 约束 ...

  4. scrapy入门二(分页抓取文章入库)

    分页抓取博客园新闻,先从列表里分析下一页按钮 相关代码: # -*- coding: utf-8 -*- import scrapy from cnblogs.items import Article ...

  5. python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容

    python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容 Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖 ...

  6. 第三百四十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—编写spiders爬虫文件循环抓取内容—meta属性返回指定值给回调函数—Scrapy内置图片下载器

    第三百四十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—编写spiders爬虫文件循环抓取内容—meta属性返回指定值给回调函数—Scrapy内置图片下载器 编写spiders爬虫文件循环 ...

  7. python实现一个栏目的分页抓取列表页抓取

    python实现一个栏目的分页抓取列表页抓取 #!/usr/bin/env python # coding=utf-8 import requests from bs4 import Beautifu ...

  8. 二十 Python分布式爬虫打造搜索引擎Scrapy精讲—编写spiders爬虫文件循环抓取内容—meta属性返回指定值给回调函数—Scrapy内置图片下载器

    编写spiders爬虫文件循环抓取内容 Request()方法,将指定的url地址添加到下载器下载页面,两个必须参数, 参数: url='url' callback=页面处理函数 使用时需要yield ...

  9. 如何让Python爬虫一天抓取100万张网页

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 王平 源自:猿人学Python PS:如有需要Python学习资料的 ...

随机推荐

  1. cf1153D 树形dp+思维

    一千八的题也不会做了呜呜呜 size[u]表示结点u下的叶子结点, 思维:可以想到一个子树对其父亲会有一个消耗值 考虑一个点如果是max,那么其最大值可以是size[u]-p,p是消耗值最小的子树 一 ...

  2. git本地项目上传至码云gitee

    如果你的本机是安装成功第一次使用,先配置一下一些基本的信息 $ git config--global user.name "Your Name" $ git config --gl ...

  3. Spring注解式事务解析

    #Spring注解式事务解析 增加一个Advisor 首先往Spring容器新增一个Advisor,BeanFactoryTransactionAttributeSourceAdvisor,它包含了T ...

  4. DWM1000 测距原理简单分析 之 SS-TWR

    蓝点DWM1000 模块已经打样测试完毕,有兴趣的可以申请购买了,更多信息参见 蓝点论坛 正文: DWM1000 超宽带测距,使用的TOF(time of fly) 的方式,也就是计算无线电磁波传输时 ...

  5. XVIII Open Cup named after E.V. Pankratiev. Eastern Grand Prix

    A. Artifacts 建立语法分析树,首先根据上下界判断是否有解,然后将所有数按下界填充,线段树判断是否存在和超过$K$的子区间. B. Brackets and Dots 最优解中一定包含一对中 ...

  6. XVII Open Cup named after E.V. Pankratiev. Eastern GP, Division 1

    A. Count The Ones $ans=b-c+1$. #include <stdio.h> using namespace std ; int a , b , c ; void s ...

  7. 20172310 蓝墨云ASL测试 2018-1938872

    20172310 蓝墨云ASL测试 2018-1938872 题目: 已知线性表具有元素{5,13,19,21,37,56,64,75,80,88,92},如果使用折半查找法,ASL是多少? 解答:( ...

  8. ajax多图上传

    百度云代码 参考:https://segmentfault.com/q/1010000004218827

  9. Arrange the Bulls [POJ2441] [状压DP]

    题意 n头牛,m个房间,每头牛有自己喜欢的房间,问每头牛都住进自己喜欢的房间有多少种分配方法? Input In the first line of input contains two intege ...

  10. swift中Cell的内容定制

    1.cellForTitle 2.register