0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python 爬取CSDN的极客头条

马哥Linux运维 来源:未知 作者:邓佳佳 2018-03-21 14:58 次阅读

这两周花了点时间读了《Python网络数据采集》,内容不多,不到200页,但是非常丰富,有入门,有提高,有注意事项,有经验之谈,有原理,有分析,读完受益匪浅。书中讲了很多反爬虫、图片验证码之类的东西,不过感谢csdn的开放性,这些都没有。所以第一个练习,就是爬取csdn的极客头条的更新文章。

1、思路

思路比较简单,首先是登录,然后爬取页面的更新文章名称和链接。要注意的一点是,极客头条的列表刷新是动态的,只有页面有滚动条并且往下拉的时候,才会加载新的文章列表。我用竖屏显示器试了下,没有滚动条的情况下,默认显示20条的文章列表,结果不能加载新的文章列表,应该算是bug。

2、准备

通过浏览器的开发人员工具抓包,可以发现极客头条申请新列表的时候URL格式如下:

http://geek.csdn.net/service/news/get_news_list?jsonpcallback=jQuery203014439105321047596_1516862462757&username=[账户名]&from=-&size=20&type=hackernewsv2_new&_=1516862462758

请求参数

jsonpcallback:

jQuery20302827217349787545_1516863701413 #该参数是jQuery框架自动生成的匿名回调函数的函数名,用于ajax获取数据时的数据处理,看网页源代码,应该是利用getJSON,所以是页面端生成的参数,可以随意填写

username: [账户名]

from:

6:252765 #这个参数代表的是下一次请求文章列表时,文章的起始编号,如果是第一次请求列表,则这里填‘-’(短杠),和上面例子中一样,下次编号会在本次请求返回的JSON数据中携带

size:

20 #本次请求的文章条目数,我试过1000都成功了。。。

type:

hackernewsv2_new #文章类型,类型在首页的“最热 最新 业界”等等那一行小标题,选择的分类不同,这个参数不同,具体抓包可见

_:

1516863701415 #没什么用,就是第一个参数下短杠后面的数字累加,实际测试没有也可以

通过查找资料和抓包,发现csdn的登录还是很简单的,只要用户名密码,不需要验证码等等,抓包可以看到请求参数:

gps:

39.890503,116.431339

username:

[账户名]

password:

[密码] #抓包的话这里是明码,发出去的话应该是加密的

rememberMe:

true #是否记住密码

lt:

LT-448149-vgNusKFi3i7wBRIZUrzCFLDfoDVP34 #这个参数是在登录主页面中的,需要自己解析出来,数值随机,每次登录需要获取

execution:

e3s1 #目前是固定值,和网文对比这个值不同,所以还是每次登录获取的好

_eventId:

submit #固定值,就是代表提交

登录时要注意的是,csdn为了防爬虫,要求HTTP头的User-Agent字段必须是真实的,所以我用了抓包里面真实的浏览器填充的字段,否则会一直登录失败,返回登录页。

通过抓包可以看到,请求文章后,返回的是json数据,其中‘from’自动用于下次请求,‘html’字段就是返回的网页,utf-8编码的Unicode字符串,Python默认用的就是Unicode,所以取出html字段的数据后自动转为了汉字、符号等,然后解析其中的class类型为‘title’的链接,就可以获得文章链接和名称。

3、代码(非常短)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    56

    文章

    4793

    浏览量

    84631
  • csdn
    +关注

    关注

    2

    文章

    16

    浏览量

    6844

原文标题:Python 爬取CSDN的极客头条

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    python实现网页爬虫图片

    来实现这样一个简单的爬虫功能,把我们想要的代码取到本地,功能有点类似我们之前学过的批处理。下面就看看如何使用python来实现这样一个功能,主要分为三步,如下:一. 获取整个页面数据首先我们可以先
    发表于 04-05 15:32

    python

    python学习1.数据2.图片
    发表于 09-21 18:18

    采用xpath网站内容

    xpathmooc网课程
    发表于 04-11 12:01

    基于Python3对携程网页上北京五星级酒店列表的

    Python3 携程网[1] 根据好评优先顺序,获取北京五星级酒店列表
    发表于 04-19 16:25

    基于Python实现一只小爬虫拉勾网职位信息的方法

    通俗易懂的分析如何用Python实现一只小爬虫,拉勾网的职位信息
    发表于 05-17 06:54

    python音频文件的步骤

    python爬虫音频文件
    发表于 08-22 14:23

    Python豆瓣电影信息和存储数据库

    Python——豆瓣电影信息并存储数据库
    发表于 03-11 11:19

    百度92年程序员因“篡改数据”被抓

    百度92年程序员因“篡改数据”被抓—— 威廉希尔官方网站 人员的新闻圈!CSDN 的读者朋友们早上好哇,「头条」来啦,快来看今天都有哪些值得我们威廉希尔官方网站 人关注的重要新闻吧。整理 | 张红月出品 |
    发表于 07-28 07:04

    python基础语法及流程控制

    爬虫复习1.python基础python基础语法 流程控制 函数封装2.防措施整体防User-AgentrefererIP代理池Cookie代理池 各自防
    发表于 08-31 07:41

    豆瓣电影Top250信息

    通过本案例[豆瓣电影Top250信息]锻炼除正则表达式之外两种信息解析方式:Xpath和PyQuery。url地址:https://movie.douban.com/top25
    发表于 03-23 15:47

    Python如何实时变化的WebSocket数据

    Python 中的网络请求库非常多,Requests 是最常用的请求库之一,它可以模拟发送网络请求。但是这些请求都是基于 HTTP 协议的。在面对 WebSocket 的时候 Requests 就发挥不料作用了,必须使用能够连接 WebSocket 的库。
    的头像 发表于 03-11 09:31 3568次阅读
    <b class='flag-5'>Python</b>如何<b class='flag-5'>爬</b><b class='flag-5'>取</b>实时变化的WebSocket数据

    如何安装第三方模块4K壁纸

    如何安装第三方模块4K壁纸
    发表于 12-27 10:39 0次下载

    华为发布麒麟 990 芯片;苹果召回部分电源插头转换器;KDevelop 5.4.2 发布​ | 头条...

    快来收听头条音频版吧,智能播报由标贝科技提供威廉希尔官方网站 支持。「CSDN
    发表于 01-11 13:24 3次下载
    华为发布麒麟 990 芯片;苹果召回部分电源插头转换器;KDevelop 5.4.2 发布​ | <b class='flag-5'>极</b><b class='flag-5'>客</b><b class='flag-5'>头条</b>...

    如何用python抖音app数据

    记录一下如何用pythonapp数据,本文以抖音视频app为例。
    的头像 发表于 03-16 09:07 5329次阅读

    Scrapy怎么Python文件

    我们介绍了Scrapy框架运行基本原理,紧接着我们介绍了如何利用Scrapy文本数据
    的头像 发表于 02-24 15:16 590次阅读
    Scrapy怎么<b class='flag-5'>爬</b><b class='flag-5'>取</b><b class='flag-5'>Python</b>文件