导航:首页 > 编程语言 > php爬虫爬知乎

php爬虫爬知乎

发布时间:2022-11-18 10:37:49

㈠ 如何用php 编写网络爬虫

其实用PHP来爬会非常方便,主要是PHP的正则表达式功能在搜集页面连接方面很方便,另外PHP的fopen、file_get_contents以及libcur的函数非常方便的下载网页内容。

python爬虫登录知乎后怎样爬取数据

模拟登录
很多网站,比如知乎、微博、豆瓣,都需要登录之后,才能浏览某些内容。所以想要爬取这类网站,必须先模拟登录。比较简单的方式是利用这个网站的 cookie。cookie 相当于是一个密码箱,里面储存了用户在该网站的基本信息。在一次登录之后,网站会记住你的信息,把它放到cookie里,方便下次自动登录。所以,要爬取这类网站的策略是:先进行一次手动登录,获取cookie,然后再次登录时,调用上一次登录得到的cookie,实现自动登录。
动态爬取
在爬取知乎某个问题的时候,需要将滑动鼠标滚轮到底部,以显示新的回答。静态的爬取方法无法做到这一点,可以引入selenium库来解决这一问题。selenium库模拟人浏览网站、进行操作,简单易懂。

㈢ scrapy爬知乎问题,每次爬到240000多以后就结束了,什么原因

服务器需要参数没传全
建议抓包:模拟get 或post

㈣ 如何用爬虫爬取知乎专栏信息

URI: http://zhuanlan.hu.com/api/columns/jixin GET/HTTP 1.1

访问上面的URI,浏览器地址栏里直接粘贴也行,得到的返回JSON数据就包含了专栏关注数。
不管AngularJS还是其它架构,都是服务端的东西,再天花乱坠的服务端架构,到了客户端终究逃不脱HTTP协议,至少目前来说还是如此。
顺便分享一些关于爬知乎的东西。
目前来说还没有官方API的支持,可能最有用的也就是用户的“个性网址”(好别扭,下称UID)了,譬如黄继新老师的UID: jixin,不过可以由用户本人修改,但每个用户一定唯一。
以{{%UID}}代替相应的UID。
1. 获得用户专栏入口:

URI: http://www.hu.com/people/{{%UID}}/posts GET/HTTP 1.1
XPATH: //div[@id='zh-profile-list-container']

解析上述内容,可获得该用户所有的专栏入口地址。
2. 获得专栏文章信息:

URI: http://zhuanlan.hu.com/api/columns/{{%UID}}/posts?limit={{%LIMIT}}&offset={{%OFFSET}} GET/HTTP 1.1

{{%LIMIT}}: 表示该次GET请求获取数据项的数量,即专栏文章信息数量。我没有具体测试过最大值为多少,但是可以设置为比默认值大。默认值为10。
{{%OFFSET}}: 表示该次GET请求获取数据项的起始偏移。
解析上述内容,可以获得每篇专栏文章的信息,比如标题、题图、专栏文章摘要、发布时间、赞同数等。该请求返回JSON数据。
注意:解析该信息时,可以获得该篇专栏文章的链接信息。
3. 获得专栏文章:

URI: http://zhuanlan.hu.com/api/columns/{{%UID}}/posts/{{%SLUG}} GET/HTTP 1.1

{{%SLUG}}: 即为2中获得的文章链接信息,目前为8位数字。
解析上述内容,可以获得专栏文章的内容,以及一些文章的相关信息。该请求返回JSON数据。
上述这些应该足够满足题主的要求了。最重要的还是要善用Chrome调试工具,此乃神器!
* * * * * * * * * *
以下是一些零散的更新,用于记录知乎爬虫的想法。当然,相关实现还是要尊重ROBOTS协议,可以通过http://www.hu.com/robots.txt查看相关参数。
UID是对应该用户所有信息的入口。
虽然用户信息有修改间隔限制(通常为若干月不等),但考虑到即使是修改用户名的操作也会使得UID变更,进而令先前的存储失效。当然这也是可以突破的:用户hash。这个hash值为32位字符串,对每个账号是唯一且不变的。
通过UID获得hash:

URI: http://www.hu.com/people/%{{UID}} GET/HTTP 1.1
XPATH: //body/div[@class='zg-wrap zu-main']//div[@class='zm-profile-header-op-btns clearfix']/button/@data-id

解析上述内容,可获得UID对应的hash值。(没错,这个值就是存在“关注/取消关注”这个按钮里的。)这样即可唯一标识用户。
目前还没有找到方法通过hash_id获得UID,但是有间接方法可以参考:通过关注列表定期检查用户信息是否变更,当然关注/取消关注操作也可以自动化:

关注操作
URI: http://www.hu.com/node/MemberFollowBaseV2 POST/HTTP 1.1
Form Data
method: follow_member
params: {"hash_id": ""}
_xsrf: <xsrf>

取消关注操作
URI: http://www.hu.com/node/MemberFollowBaseV2 POST/HTTP 1.1
Form Data
method: unfollow_member
params: {"hash_id": ""}
_xsrf: <xsrf>

知乎爬虫需要一份UID列表才能正常运转,如何获得这份列表是一个需要考虑的问题。目前一个可行的想法是选定若干大V用户,批量爬取其被关注列表。举例来说,张公子目前被关注数达到58W+,通过:
URI: http://www.hu.com/node/ProfileFollowersListV2 POST/HTTP 1.1
Form Data
method: next
params: {"offset": {{%OFFSET}}, "order_by": "hash_id", "hash_id": "{{%HASHID}}"}
_xsrf: <xsrf>

㈤ 如何使用python爬取知乎数据并做简单分析

一、使用的技术栈:
爬虫:python27 +requests+json+bs4+time
分析工具: ELK套件
开发工具:pycharm
数据成果简单的可视化分析
1.性别分布
0 绿色代表的是男性 ^ . ^
1 代表的是女性
-1 性别不确定
可见知乎的用户男性颇多。
二、粉丝最多的top30
粉丝最多的前三十名:依次是张佳玮、李开复、黄继新等等,去知乎上查这些人,也差不多这个排名,说明爬取的数据具有一定的说服力。
三、写文章最多的top30
四、爬虫架构
爬虫架构图如下:
说明:
选择一个活跃的用户(比如李开复)的url作为入口url.并将已爬取的url存在set中。
抓取内容,并解析该用户的关注的用户的列表url,添加这些url到另一个set中,并用已爬取的url作为过滤。
解析该用户的个人信息,并存取到本地磁盘。
logstash取实时的获取本地磁盘的用户数据,并给elsticsearchkibana和elasticsearch配合,将数据转换成用户友好的可视化图形。
五、编码
爬取一个url:
解析内容:
存本地文件:
代码说明:
* 需要修改获取requests请求头的authorization。
* 需要修改你的文件存储路径。
源码下载:点击这里,记得star哦!https : // github . com/forezp/ZhihuSpiderMan六、如何获取authorization
打开chorme,打开https : // www. hu .com/,
登陆,首页随便找个用户,进入他的个人主页,F12(或鼠标右键,点检查)七、可改进的地方
可增加线程池,提高爬虫效率
存储url的时候我才用的set(),并且采用缓存策略,最多只存2000个url,防止内存不够,其实可以存在redis中。
存储爬取后的用户我说采取的是本地文件的方式,更好的方式应该是存在mongodb中。
对爬取的用户应该有一个信息的过滤,比如用户的粉丝数需要大与100或者参与话题数大于10等才存储。防止抓取了过多的僵尸用户。
八、关于ELK套件
关于elk的套件安装就不讨论了,具体见官网就行了。网站:https : // www . elastic . co/另外logstash的配置文件如下:
从爬取的用户数据可分析的地方很多,比如地域、学历、年龄等等,我就不一一列举了。另外,我觉得爬虫是一件非常有意思的事情,在这个内容消费升级的年代,如何在广阔的互联网的数据海洋中挖掘有价值的数据,是一件值得思考和需不断践行的事情。

㈥ 如何对知乎内容进行爬虫

下面说明知乎爬虫的源码和涉及主要技术点:
(1)程序package组织
(2)模拟登录(爬虫主要技术点1)

要爬去需要登录的网站数据,模拟登录是必要可少的一步,而且往往是难点。知乎爬虫的模拟登录可以做一个很好的案例。要实现一个网站的模拟登录,需要两大步骤是:(1)对登录的请求过程进行分析,找到登录的关键请求和步骤,分析工具可以有IE自带(快捷键F12)、Fiddler、HttpWatcher;(2)编写代码模拟登录的过程。
模拟登录

(3)网页下载(爬虫主要技术点2)

模拟登录后,便可下载目标网页html了。知乎爬虫基于HttpClient写了一个网络连接线程池,并且封装了常用的get和post两种网页下载的方法。
(4)自动获取网页编码(爬虫主要技术点3)

自动获取网页编码是确保下载网页html不出现乱码的前提。知乎爬虫中提供方法可以解决绝大部分乱码下载网页乱码问题。
(5)网页解析和提取(爬虫主要技术点4)

使用Java写爬虫,常见的网页解析和提取方法有两种:利用开源Jar包Jsoup和正则。一般来说,Jsoup就可以解决问题,极少出现Jsoup不能解析和提取的情况。Jsoup强大功能,使得解析和提取异常简单。知乎爬虫采用的就是Jsoup。
(6)正则匹配与提取(爬虫主要技术点5)

虽然知乎爬虫采用Jsoup来进行网页解析,但是仍然封装了正则匹配与提取数据的方法,因为正则还可以做其他的事情,如在知乎爬虫中使用正则来进行url地址的过滤和判断。
(7)数据去重(爬虫主要技术点6)

对于爬虫,根据场景不同,可以有不同的去重方案。(1)少量数据,比如几万或者十几万条的情况,使用Map或Set便可;(2)中量数据,比如几百万或者上千万,使用BloomFilter(着名的布隆过滤器)可以解决;(3)大量数据,上亿或者几十亿,Redis可以解决。知乎爬虫给出了BloomFilter的实现,但是采用的Redis进行去重。
(8)设计模式等Java高级编程实践

除了以上爬虫主要的技术点之外,知乎爬虫的实现还涉及多种设计模式,主要有链模式、单例模式、组合模式等,同时还使用了Java反射。除了学习爬虫技术,这对学习设计模式和Java反射机制也是一个不错的案例。
4. 一些抓取结果

㈦ php模拟登陆知乎

这种模拟登陆其实很简单,php的话主要用curl来实现。仔细研究一下你要抓的站具体是怎么实现用户登录的,可以用wireshark或者burpsuite(建议用后者)抓包看看整个过程都有那几次请求,每次请求都发送了哪些数据,构造好发给他就可以实现登录了。
之后获取个人信息就很容易了,找找php解析html库,或者最简单粗暴的就是字符串截取函数加正则表达式,把你想要的数据提取出来就好了。
对于你给出的这种验证码属于非常容易识别的验证码了,基本的识别原理参看使用Canvas进行验证码识别。
当然比较蛋疼的问题就是网页编码问题,经常爬过来全是乱码,网上找找看转码的方法,都试一下,这是一门玄学,能不能成功看你人品和耐心吧。

㈧ 对知乎内容使用爬虫爬取数据,为什么会遇到403问题

应该是知乎的反爬虫技术比较严,你试试前嗅的爬虫,我之前用它采企业信息系统的数据,他们反爬虫机制非常严格,后来用他们软件就可以写脚本破解,顺利采集到了

㈨ 如何使用爬虫自动点击知乎中的这个按钮

两种方法: 带cookielib和urllib2 import urllib2 import urllib import cookielib def login(): email = raw_input("请输入用户名:") pwd = raw_input("请输入密码:") data={"email":email,"password":pwd} post_data=urllib.urlencode(data cj=cookielib.CookieJar() opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))headers ={"User-agent":"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1"}website = raw_input('请输入网址:')req=urllib2.Request(website,post_data,headers)content=opener.open(req)print content.read() 使用selenium import selenium import webdriver browser=webdriver.Firefox() browser.get("Url") browser.find_element_by_id(" ").sendkey("username") browser.find_element_by_id(" ").sendkey("pass") browser.find_element_by_id(" ").click()

㈩ 如何用爬虫爬取知乎专栏信息

推荐个很好用的软件,我也是一直在用的,就是前嗅的ForeSpider软件,
我是一直用过很多的采集软件,最后选择的前嗅的软件,ForeSpider这款软件是可视化的操作。简单配置几步就可以采集。如果网站比较复杂,这个软件自带爬虫脚本语言,通过写几行脚本,就可以采集所有的公开数据。
软件还自带免费的数据库,数据采集直接存入数据库,也可以导出成excel文件。
如果自己不想配置,前嗅可以配置采集模板,我的模板就是从前嗅购买的。
另外他们公司不光是软件好用,还有自己的数据分析系统,直接采集完数据后入库,ForeSpider内部集成了数据挖掘的功能,可以快速进行聚类分类、统计分析等,采集结果入库后就可以形成分析报表。
最主要的是他采集速度非常快,我之前用八爪鱼的软件,开服务器采,用了一个月采了100万条,后来我用ForeSpider。笔记本采的,一天就好几百万条。
这些都是我一直用前嗅的经验心得,你不妨试试。

阅读全文

与php爬虫爬知乎相关的资料

热点内容
服务器软路由怎么做 浏览:289
冰箱压缩机出口 浏览:225
OPT最佳页面置换算法 浏览:642
网盘忘记解压码怎么办 浏览:852
文件加密看不到里面的内容 浏览:651
程序员脑子里都想什么 浏览:430
oppp手机信任app在哪里设置 浏览:185
java地址重定向 浏览:268
一年级下册摘苹果的算法是怎样的 浏览:448
程序员出轨电视剧 浏览:88
服务器系统地址怎么查 浏览:54
解压游戏发行官 浏览:601
国外小伙解压实验 浏览:336
顶级大学开设加密货币 浏览:437
java重载与多态 浏览:528
腾讯应届程序员 浏览:942
一键编译程序 浏览:129
语音加密包哪个好 浏览:341
有什么学习高中语文的app 浏览:283
安卓手机的表格里怎么打勾 浏览:411