前言

拿来练手的,比较简单(且有bug),欢迎交流~

功能介绍

抓取当日的知乎日报的内容,并将每篇博文另存为一个txt文件,集中放在一个文件夹下,文件夹名字为当日时间。

使用的库

re,BeautifulSoup,sys,urllib2

注意事项

1.运行环境是Linux,python2.7.x,想在win上使用直接改一下里边的命令就可以了

2.bug是在处理 “如何正确吐槽”的时候只能获取第一个(懒癌发作了)

3.直接获取(如下)内容是不可以的,知乎做了反抓取的处理

urllib2.urlop(url).read()

所以加个Headers就可以了

4.因为zhihudaily.ahorn.me这个网站时不时挂掉,所以有时候会出现错误

 def getHtml(url):
header={'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1','Referer' : '******'}
request=urllib2.Request(url,None,header)
response=urllib2.urlopen(request)
text=response.read()
return text

4.在做内容分析的时候可以直接使用re,也可以直接调用BeautifulSoup里的函数(我对正则表达式发怵,所以直接bs),比如

 def saveText(text):
soup=BeautifulSoup(text)
filename=soup.h2.get_text()+".txt"
fp=file(filename,'w')
content=soup.find('div',"content")
content=content.get_text()

show me the code

 #Filename:getZhihu.py
import re
import urllib2
from bs4 import BeautifulSoup
import sys reload(sys)
sys.setdefaultencoding("utf-8") #get the html code
def getHtml(url):
header={'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1','Referer' : '******'}
request=urllib2.Request(url,None,header)
response=urllib2.urlopen(request)
text=response.read()
return text
#save the content in txt files
def saveText(text):
soup=BeautifulSoup(text)
filename=soup.h2.get_text()+".txt"
fp=file(filename,'w')
content=soup.find('div',"content")
content=content.get_text() # print content #test
fp.write(content)
fp.close()
#get the urls from the zhihudaily.ahorn.com
def getUrl(url):
html=getHtml(url)
# print html
soup=BeautifulSoup(html)
urls_page=soup.find('div',"post-body")
# print urls_page urls=re.findall('"((http)://.*?)"',str(urls_page))
return urls
#main() founction
def main():
page="http://zhihudaily.ahorn.me"
urls=getUrl(page)
for url in urls:
text=getHtml(url[0])
saveText(text) if __name__=="__main__":
main()

python获取知乎日报另存为txt文件的更多相关文章

  1. 用python爬整本小说写入txt文件

    没太完善,但是可以爬下整本小说.日后会写入数据库,注释不要太在意,都是调试的.入库估计这周之后,这次爬的是笔趣阁的第1150本书,大家只要可以改get_txt()里数字就行,查到自己要看哪本书一改就可 ...

  2. python基础===获取知乎标题时候,文件编码失败的总结

    总结一下,关于获取到的信息编码失败. 刚才在执行代码的时候,发现一个问题: 然后修改代码如下: '''爬取知乎界面的标题''' import requests import re import sys ...

  3. python获取数据网页数据并创建文件夹保存(基于python3.6)

    from urllib.parse import urljoin import urllib.request from bs4 import BeautifulSoup import os impor ...

  4. python保存二维列表到txt文件,读取txt文件里面的数据转化为二维列表

    源码: # 读文件里面的数据转化为二维列表 def Read_list(filename): file1 = open(filename+".txt", "r" ...

  5. Python疫情爬取输出到txt文件

    在网上搬了一个代码,现在不适用了,改了改 import requestsimport jsondef Down_data(): url = 'https://view.inews.qq.com/g2/ ...

  6. Python 获取脚本路径以及脚本所在文件夹路径

    import os script_path = os.path.realpath(__file__) script_dir = os.path.dirname(script_path)

  7. Java以流的方式将指定文件夹里的.txt文件全部复制到另一文件夹,并删除原文件夹中所有.txt文件

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...

  8. web端自动化——Python读取txt文件、csv文件、xml文件

    1.读取txt文件 txt文件是我们经常操作的文件类型,Python提供了以下几种读取txt文件的方式. 1)read(): 读取整个文件. 2)readline(): 读取一行数据. 3)readl ...

  9. Python新建动态命名txt文件

    # -*- coding: utf-8 -*- import os,sys,time fname=r"D:\01-学习资料\python" def GetNowTime():#获取 ...

随机推荐

  1. 如何用 fiddler 调试线上代码

    有时代码上线了,突然就碰到了坑爹的错误.或者有时看别人家线上的代码,对于一个文件想 fork 下来试试效果又不想把全部文件拉到本地,都可以使用 fiddler 的线上调试功能. 比方说我们打开携程的首 ...

  2. 读懂IL代码就这么简单 (一)

    一前言 感谢 @冰麟轻武 指出文章的错误之处,现已更正 对于IL代码没了解之前总感觉很神奇,初一看完全不知所云,只听高手们说,了解IL代码你能更加清楚的知道你的代码是如何运行相互调用的,此言一出不明觉 ...

  3. 使用rest方式修改服务端xml文件

    想法: 最近想用REST的方式去修改一个远端的xml文件,于是自己写了个Handler 设计: 用现成的XPath,和GET,POST,PUT,DELETE这4个http方法作为动作,达到直接读写xm ...

  4. 使用windbg查看DependencyObject的属性

    这里以WPF作为探测用的例子,简单一些,看看Title的值是什么样子.(之所以写这个,因为不是简单的一个!do就能看到东西的,中间要绕两下,这也涉及到了DependencyObject的实现机制及数据 ...

  5. 边界网关协议BGP

    Border Gateway Protocol (BGP) is a standardized exterior gateway protocol designed to exchange routi ...

  6. Android无线调试及手机设备与PC同屏工具——Chrome插件Vysor

    我们平时用手机调试时,经常是手不离机,以前可以下载个jar包能把手机屏映射到电脑桌面,但是运行比较卡,后来就放弃了,再之,手机接数据线有时也不太方便 ,pc与手机(连wifi)如处同一网段,就可以通过 ...

  7. java-io-FileInputStream与FileOutputStream类

    本文转载这里FileInputStream和FileOutputStream类需要注意的问题:  1.FileInputStream和FileOutputStream类分别用来创建磁盘文件的输入流和输 ...

  8. Freemarker list标签,list数据判断使用

    <#if listSecMDIF?exists && (listSecMDIF?size>0)> <ul style="float: left;mar ...

  9. ASP.net mvc Code First 更新数据库

    code first 数据库迁移步骤如下: 第一步:Add-Migration DataBase_Init 1. Install-Package EntityFramework.zh-Hans –Ve ...

  10. linux(本机)配置域名

    hosts是一个没有扩展名的系统文件, 其作用就是将主机名映射到对应的ip地址. 当用户执行一条ping命令时(如ping www.abc.com),系统会首先自动从hosts文件中寻找www.abc ...