精华内容
下载资源
问答
  • 简单的知乎爬虫,输入关键词,爬取该关键词下的提问,回答,点赞数等,以csv格式存储
  • 知乎爬虫

    2017-08-02 00:54:00
    知乎爬虫之2:爬虫流程设计(附赠爬出的数据库) 爬虫带你逛知乎(上篇) 如何更好的收藏和保存知乎上看到的精华内容? 如何对知乎内容进行爬虫? 如何用爬虫爬取知乎专栏信息? 【python爬虫】爬取知乎收藏夹...
    展开全文
  • 知乎 爬虫

    2018-05-28 11:46:49
    import requests from pyquery import PyQuery as pq def getHtml(url): try: headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, ...
    import requests
    from pyquery import PyQuery as pq
    
    def getHtml(url):
        try:
            headers = {
                'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
            }
            r = requests.get(url,headers=headers)
            r.raise_for_status()
            r.encoding = r.apparent_encoding
            return r.text
        except requests.RequestException as e:
            return e
    
    def parseHtml(html):
        doc = pq(html)
        items = doc('.explore-tab.feed-item').items()
        for item in items:
            question = item.find('h2').text()
            author = item.find('.author-link-line').text()
            answer = pq(item.find('.content').html()).text()
            with open('explore2.txt','a',encoding='utf-8') as f:
                f.write('\n'.join([question,author,answer]))
                f.write('\n' + '=' * 50 + '\n')
    def main():
        url = "https://www.zhihu.com/explore"
        html =getHtml(url)
        parseHtml(html)
    
    main()
    展开全文
  • python编写知乎爬虫实践.pdf
  • 知乎爬虫和v2ex爬虫的实现。使用python的pyspider爬虫进行开发,主要爬取知乎的问题和评论,以及v2ex的帖子。数据转储到mysql数据库,用于zhihu项目的使用。
  • 知乎爬虫系列文章: 知乎爬虫之1:开篇序言 知乎爬虫之2:爬虫流程设计 知乎爬虫之3:请求分析 知乎爬虫之4:抓取页面数据 知乎爬虫之5:爬虫优化 github爬虫项目(源码)地址(已完成,关注和star在哪~):...

    本文由博主原创,转载请注明出处

     

    知乎爬虫系列文章:

    1. 知乎爬虫之1:开篇序言
    2. 知乎爬虫之2:爬虫流程设计
    3. 知乎爬虫之3:请求分析
    4. 知乎爬虫之4:抓取页面数据
    5. 知乎爬虫之5:爬虫优化

    github爬虫项目(源码)地址(已完成,关注和star在哪~):

    附赠之前爬取的数据一份(mysql): 链接: 只下载不点赞,不star,差评差评~蓝瘦香菇)

    1. 使用多线程加速

    什么,爬虫爬起来数据太慢了,怎么办?你那当然是开启多线程了。那么多线程是什么我就不介绍了。如果还不知道的,请左移多线程百度百科
    恩,知道了多线程,但是多线程如果自己控制的话,会很不好控制,所以咱们还需要两个线程池,一个负责拿到个人信息,一个负责获取用户的token。接下来让咱们之前写的ParserBase类实现Runnable,然后在ParserFollower里和ParserUserInfo里分别实现run方法,其实也很简单了,就是把之前的爬去逻辑,丢到run方法里。然后咱们就开启了多线程之旅。
    但是在存取数据的时候会遇到很多问题,比如数据会重复,这就出现了脏数据,那么咱们就是适当的加锁。来保证数据的干净。

    2. 使用队列减少数据库访问

    如果说数据重复的问题解决的,那么咱们还有一个大问题,因为两次爬到的可能是同一个人,但是一份在数据库里,一份在正在跑的内存里,怎么办,当然是要连接下数据库,然后判断是数据是否已经在数据库中存在了,那么在多线程且获取速度很快的情况下,那么将会频繁访问数据库,造成速度缓慢,数据库链接数过多,cpu使用率过大,那咱们怎么除处理这个问题呢?
    首先大家都一定知道,在现在内存非常大的今天,咱们完全可以把一部分数据直接缓存下载,而且程序访问内存的代价要比访问数据库的代价要小的太多。
    因此,咱们可以用一个list把咱们已经有的token存下来,然后每次去这个list里去做验证,这样,就减少了数据库的访问了频率。

    3. 实现LRU提高缓存命中率

    如上所说,用一个list的确是起到了减少数据库访问的目的,但是效果好像不如想象那么好,因为数据库里100k的数据,咱们不可能把所有数据都缓存下载,那么怎么才能在优化下呢?
    这时候就要合理的处理这个list了,自己实现一个LRU缓存,来调高命中率。
    那么lru是什么?y一句话LRU是Least Recently Used 近期最少使用算法,也叫淘汰算法。
    具体实现和思想可见缓存淘汰算法–LRU算法
    按照这个思想,其实还有个优化,那就是根据碰撞次数和上次碰撞时间进行移除。咱们只是实现简单的,具体实现在MatrixSeven/ZhihuSpider


     

     

    ========关于获取页面数据=======

    咱们上一篇分析了知乎的登陆请求和如何拿到粉丝/关注的请求,那么咱们这篇就来研究下如何拿利用Jsoup到咱们想要的数据。
    那么咱们说下,首先请求关注者和粉丝者是pcweb版本的,但是获取页面的是手机页面的。
    好,正题:

    1.什么是Jsoup

    jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

    2. HttpClient请求模拟

    HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。

    3.走起页面

    首先模拟手机浏览器的UA。就是让咱们打开的页面返回的是移动端的页面效果,那么最应该怎么怎么做呢?其实服务器判定你是ie还是chrome还是firefox是根据请求头里面的UA实现的,因此咱们要找一个手机浏览器的UA。。
    咱们可以某度一下或者直接在浏览器里面直接f12,模拟移动端,然后看请求参数:

    User-Agent:Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36
    

     

    妥妥的没问题:

    那咱们如何将这句体现到程序里面呢?
    简单,在咱们拿到get对象后直接设置:

     httpGet.setHeader("User-Agent", "Mozilla/5.0 
            (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 
            (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36");
    

     

    就ok了,然后咱们就可以用jsoup来拿咱们想要的元素了,jsoup的语法和jq如出一辙。
    咱们直接对着页面,右击咱们想要的元素,选择审查元素,然后用jq的选择器选出来就好了。
    可以参考jQuery 选择器

    4.拿到关注者

    直接get咱们之前分析的请求地址

    https://www.zhihu.com/api/v4/members/Sweets07/followers?per_page=10&
    include=data%5B%2A%5D.employments%2Ccover_url%2Callow_message%2Canswer_coun
    t%2Carticles_count%2Cfavorite_count%2Cfollower_count%2Cgender%2Cis_followe
    d%2Cmessage_thread_token%2Cis_following%2Cbadge%5B%3F%28type%3Dbest_answerer
    %29%5D.topics&limit=10&offset=30
    

     

    不过要记得替换用户名字和在请求头里加入cookie的最后一段zc_0
    然后请求数据返回的是json

    {
      "paging": {
        "is_end": false,
        "next": "https://www.zhihu.com/api/v4/members/Sweets07/followers?per_page=10&include=data%5B%2A%5D.answer_count%2Carticles_count%2Cfollower_count%2Cis_followed%2Cis_following%2Cbadge%5B%3F%28type%3Dbest_answerer%29%5D.topics&limit=10&offset=20",
        "previous": "https://www.zhihu.com/api/v4/members/Sweets07/followers?per_page=10&include=data%5B%2A%5D.answer_count%2Carticles_count%2Cfollower_count%2Cis_followed%2Cis_following%2Cbadge%5B%3F%28type%3Dbest_answerer%29%5D.topics&limit=10&offset=0",
        "is_start": false,
        "totals": 398
      },
      "data": [
        {
          "is_followed": true,
          "avatar_url_template": "https://pic1.zhimg.com/da8e974dc_{size}.jpg",
          "name": "陈晓峰",
          "url": "",
          "type": "people",
          "user_type": "people",
          "answer_count": 0,
          "url_token": "chen-xiao-feng-84",
          "headline": "阿里巴巴,分布式数据库,",
          "avatar_url": "https://pic1.zhimg.com/da8e974dc_is.jpg",
          "is_following": false,
          "is_org": false,
          "follower_count": 14,
          "badge": [],
          "id": "ff02ea0544901a9ddfcb7ba60c73b673",
          "articles_count": 0
        }
      ]
    }
    

     

    这个数据包括了下次请求地址,上次请求地址,时候是开始,时候是结束,共有多少粉丝,关注人基本信息,
    因此咱们可以在一个while里来获得所有粉丝数:
    流程:

    1. 第一次获取数据
    2. 获取is_end字段
    3. 判断is_end时候为true
    4. 根据is_end判断是否继续循环
    5. 如果循环,更新is_end,更新下次请求连接

    一套下来,就能拿到一个用户的所有粉丝了。

     

     

     

    吾爱Java(QQ群):170936712

    转载于:https://www.cnblogs.com/seven007/p/6248578.html

    展开全文
  • 知乎爬虫(验证码自动识别)
  • 知乎爬虫,包括文章,评论,回复等代码示例,欢迎下载交流
  • 知乎爬虫(知乎网站爬取工具,爬取知乎网页内容)。 大家下载试试吧。挺好用的,嘿嘿。
  • 知乎爬虫+NoSql+代码解耦合+数据科学聚类分析 feature: 1. 破解知乎登录 2. MongoDB进行数据化储存+缓存 3. DFS深度优先遍历爬虫 4. 抓取用户信息写入csv 5. 对用户信息进行分词+k-means聚类,相似度推荐 6. 各个...
  • python 实现一个知乎爬虫,登陆,获取答案,
  • 上个系列我们从易到难介绍了如何使用python编写爬虫,小伙伴们反响挺大,这个系列我们来研究下使用Java编写知乎爬虫,小伙伴们可以对比这看下。
  • 一直混知乎,看了很多大神写的爬虫,手痒写了个相关的项目:优雅这个项目的优雅体现在以下方面:调用时属于链式调用,因此你可以轻易写出这种代码:import ZhihuVAPI as zhihuprint(zhihu.Article('...默认使用 Chrome 的 ...

    一直混知乎,看了很多大神写的爬虫,手痒写了个相关的项目:优雅

    这个项目的优雅体现在以下方面:

    调用时属于链式调用,因此你可以轻易写出这种代码:

    import ZhihuVAPI as zhihu

    print(zhihu.Article('https://zhuanlan.zhihu.com/p/42381257').column.author.name)

    开箱即用,默认使用 Chrome 的 Cookies

    你不需要任何设置和登录,引用后直接使用

    内容获取自由度高

    获取列表的所有项

    import ZhihuVAPI as zhihu

    self=zhihu.People('iCheez')

    for a in self.answers():

    a:zhihu.Answer # 让 IDE 智能提示

    print(a.excerpt)

    获取列表的指定数量的项

    import ZhihuVAPI as zhihu

    self=zhihu.People('iCheez')

    for a in self.answers(5):

    a:zhihu.Answer # 让 IDE 智能提示

    print(a.excerpt)

    获取列表的从某处开始的指定数量的项

    import ZhihuVAPI as zhihu

    self=zhihu.People('iCheez')

    for a in self.answers(count=5,start=50):

    a:zhihu.Answer # 让 IDE 智能提示

    print(a.excerpt)

    获取列表的从某页开始的指定数量的项

    import ZhihuVAPI as zhihu

    self=zhihu.People('iCheez')

    for a in self.answers(count=5,page=2):

    a:zhihu.Answer # 让 IDE 智能提示

    print(a.excerpt)

    这些操作都只需要调整一两个参数就可以实现.

    而且,ZhihuVAPI 支持以下三种初始化:

    ID 初始化:zhihu.People('e4f87c3476a926c1e2ef51b4fcd18fa3')

    URL_Token 初始化(仅对用户对象有效):zhihu.People('iCheez')

    展开全文
  • 知乎爬虫:python27 requests json bs4 time
  • Java知乎爬虫

    2020-03-24 09:35:40
    根据spring boot搭建的java知乎爬虫 sql目录下有建表语句 applicationRunner中可以填写questionId github地址 https://github.com/leidongxing/api-spider 欢迎star 欢迎交流 ...
  • 知乎爬虫过程详解(附完整代码)

    万次阅读 多人点赞 2019-07-25 21:37:16
    磕盐需要,编写了一个爬虫程序,对知乎网站的数据进行爬取,关于知乎爬虫,我们分别从用户角度和问题角度两个方向对其进行爬取。 项目流程:爬虫代码(Python)→非结构化数据(Mongo)→结构化数据(MySQL)→结构化数据...
  • 知乎爬虫web系统

    千次阅读 2017-02-16 01:15:21
    知乎爬虫web系统是一个可以利用爬虫程序读取知乎用户动态的网页应用。
  • 知乎爬虫项目记录

    2017-09-15 16:31:11
    这是一个知乎爬虫项目简书地址 http://www.jianshu.com/p/da2cdf52c4a6项目地址 https://github.com/rensuperk/javaSpider根据知乎用户爬取所有和用户相关的数据数据包括关注者,被关注者,文章,专栏,想法,提问,答案,...
  • 知乎爬虫最新版

    2018-07-11 08:45:07
    java写的爬虫多线程爬取知乎用户详细信息,方便简单,重要的是这是最新的
  • Python知乎爬虫代码

    2019-07-31 17:07:22
    利用Python网络数据采集技术的爬虫代码demo,可以提供给爬虫初学者参考。
  • 知乎爬虫代码

    2017-09-27 21:51:11
    模拟登录,用scrapy+selenium+PhantomJS爬取知乎话题的评论,并且做成关键字词云展示
  • 这里是知乎爬虫的一个小项目,实际上知乎在不涉及个人主业的情况下爬虫实际上难度不大,但是这里有个小细节的地方是,知乎直接提交请求,不能够得到内容,需要附带头部信息,但是其头部信息不能直接复制浏览器信息,...
  • 零基础写Java知乎爬虫之进阶篇

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,285
精华内容 6,514
关键字:

知乎爬虫

爬虫 订阅