文档章节

简单爬虫 爬知乎日报

 阿豪boy
发布于 2017/08/25 23:42
字数 240
阅读 25
收藏 0
# coding=utf-8
import urllib
import urllib2
import urlparse
import re
import bs4
import requests

import sys

reload(sys)
sys.setdefaultencoding('utf-8')

url = 'https://daily.zhihu.com/'


# 拿到网页源码
def getHtml(url):
    header = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36'
    }

    request = urllib2.Request(url, headers=header)
    response = urllib2.urlopen(request)
    text = response.read()
    return text


# 拿到超链接
def getUrls(html):
    # 正则表达式,提高效率re.s匹配换行符
    pattern = re.compile('<a href="/story/(.*?)"', re.S)
    items = re.findall(pattern, html)

    urls = []
    for i in items:
        urls.append('https://daily.zhihu.com/story/' + i)

        # print urls
    return urls


# 解析标题和内容
def getContent(url):
    html = getHtml(url)
    # <title>在一件事情上付出越多,你对它就越喜欢,真怪</title>
    pattern = re.compile('<title>(.*?)</title>', re.S)
    titles = re.findall(pattern, html)

    # 中文在可迭代对象中是Unicode编码,
    # print  titles[0]


    pattern = re.compile('<div class="content">(.*?)<div class="view-more">', re.S);
    content = re.findall(pattern, html)[0]

    return '<h1>'+titles[0]+'/h1' + '\n' + content

#去除不需要的标签
def clear(html):
    pattern= re.compile('<p>(.*?)</p>|<li>(.*?)</li> ')
    items = re.findall(pattern,html)
    result = []

html = getHtml(url)
urls = getUrls(html)
with open('out.html', 'w+') as f:
    f.write(getContent(urls[0]))

 

© 著作权归作者所有

共有 人打赏支持
粉丝 23
博文 1082
码字总数 725814
作品 0
西安
Java爬虫抓取知乎20万用户信息并做简易分析

前段时间看@路人甲 分享了一篇爬取知乎用户的文章,心血来潮,想着也该把自己很早写的知乎爬虫完善一下 趁着每天实习回来还有点时间,整理了下思路和原来的代码 因为自己不太爱用框架,所以爬...

KKys
2017/01/21
0
0
Java 知乎爬虫

目标 爬取知乎用户信息,并作简要分析。所爬的对象是的用户,因为: 关注者数量<10的用户,很多的僵尸用户、不活跃用户 我爬虫的目的也不是大而全,高质量用户更有分析意义 整体思路 JDK 环境...

被称为L的男人
2017/12/03
0
0
用Zhihu-OAuth库轻松爬取知乎各类数据

去年(手动滑稽)某日想爬取知乎特定话题下的全部回答数据,于是翻出以前写的知乎话题爬虫跑运行了下,没想到遇到一个一直没能解决的bug,貌似是抓包到的API返回的JSON数据格式有问题,于是遭...

Deserts_X
01/02
0
0
Python 模拟登录知乎

前言 前天看到一个爬取了知乎50多万评论的帖子, 羡慕的同时也想自己来尝试一下。看看能不能获取一些有价值的信息。 必备知识点 下面简单的来谈谈我对常见的防爬虫的一些技巧的理解。 header...

郭璞
2017/04/07
0
0
Python爬虫综述(笔记)

一、什么是爬虫? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。 1)你需要学习 基本的...

幽幽幽幽古溪
2016/11/17
37
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

咕泡-Factory设计模式笔记

个人感悟: 设计模式都是处理复杂问题的,如果问题本身很简单,使用设计模式反而累赘,增加了开发的复杂性 遇到最简单的情况,直接 new 如果创建对象的过程简单,但是需要匹配不同情况,返回...

职业搬砖20年
22分钟前
0
0
Java中的锁分类

在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下: 公平锁/非公平锁 可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏...

Funcy1122
31分钟前
0
0
Ansible随机数

想为你的Ansible剧本取一个随机数?还想在接下来的运行中保持系统的等幂性?这里有一个答案。 假如,你要为一大批服务器设置cron任务,却不想让它们同时启动,你可以这样设置分钟数: minute...

大别阿郎
40分钟前
0
0
SpringCloud之服务注册中心Eureka

本系列介绍的配置均基于 Spring Boot 2.0.1.RELEASE 版本和 Spring Cloud Finchley.SR1 服务注册中心 Spring Cloud 已经帮我们实现了服务注册中心,我们只需要很简单的几个步骤就可以完成。 ...

熊小飞呀
今天
15
1
“Comparison method violates ...”异常的再现方法

前提条件:JDK8 代码: import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;public class Test { public stat......

hunterli
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部