python获取知乎日报另存为txt文件

摘要:
介绍很简单。欢迎来到exchange~功能介绍。抓取当天知乎每日新闻的内容,并将每个博客文章保存为一个txt文件,该文件集中在一个带有当天时间名称的文件夹下。

前言

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

功能介绍

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

使用的库

re,BeautifulSoup,sys,urllib2

注意事项

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

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

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

urllib2.urlop(url).read()

所以加个Headers就可以了

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

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

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

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

show me the code

 1 #Filename:getZhihu.py
 2 import re
 3 import urllib2
 4 from bs4 import BeautifulSoup
 5 import sys
 6 
 7 reload(sys)
 8 sys.setdefaultencoding("utf-8")
 9 
10 #get the html code
11 def getHtml(url):
12     header={'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1','Referer' : '******'}
13     request=urllib2.Request(url,None,header)
14     response=urllib2.urlopen(request)
15     text=response.read()
16     return text
17 #save the content in txt files
18 def saveText(text):
19     soup=BeautifulSoup(text)
20     filename=soup.h2.get_text()+".txt"
21     fp=file(filename,'w')
22     content=soup.find('div',"content")
23     content=content.get_text()
24     
25 #   print content #test
26     fp.write(content)
27     fp.close()
28 #get the urls from the zhihudaily.ahorn.com
29 def getUrl(url):
30     html=getHtml(url) 
31 #   print html
32     soup=BeautifulSoup(html)
33     urls_page=soup.find('div',"post-body")
34 #   print urls_page
35 
36     urls=re.findall('"((http)://.*?)"',str(urls_page))
37     return urls 
38 #main() founction
39 def main():
40     page="http://zhihudaily.ahorn.me"
41     urls=getUrl(page)
42     for url in urls:
43         text=getHtml(url[0])
44         saveText(text)
45 
46 if __name__=="__main__":
47     main()

免责声明:文章转载自《python获取知乎日报另存为txt文件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇VS2010-MFC(利用MFC向导生成单文档应用程序框架)AndroidSchedulers.mainThread()无法切换到主线程,原来是细节问题啊下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

url、 src 和href 标签的区别

url 统一资源定位符  标准格式   协议类型:[//服务器地址[:端口号]][/资源层级UNIX文件路径]文件名?查询 url语法规则   scheme://host.domain:port/path/filename   https://www.baidu.com/daily/view?id=163664 scheme  定义因特网服务的类型,常见的...

微信公众平台开发教程(七)安全策略

微信公众平台开发教程(七)安全策略尽管处理微信请求的服务器,处于微信服务器的后端,但是安全问题依然不可小觑。 大概总结以下几个方面,希望引起注意。 一、设置高复杂度的Token,尽量隐藏服务地址URL URL:即为处理微信请求的链接地址Token:用户身份凭证 申请成为开发者或者修改URLToken时,微信会通过Get请求访问URL,验证签名,其中需要To...

Jenkins自动执行python脚本输出测试报告

前言 在用python做自动化测试时,我们写好代码,然后需要执行才能得到测试报告,这时我们可以通过 Jenkins 来进一步完成自动化工作。 借助Jenkins,我们可以结合 Git/SVN 自动拉取代码,可以设置定时构建,接着就可以定时触发执行脚本,得到并查看测试报告,最后还可以配置发送邮件等。 今天我们就来学习下,如何结合 Git/SVN 自动拉取代码...

python冲刺(4)切片 等

   L[0:3] 表示从索引0开始,取到第3个元素为止(不包含第三个)。 只用一个L[:]表示从头到尾。   L[::2] 第三个参数表示每N个取一个,上面的L[::2]会每两个元素取出一个来,也就是各一个取一个。 把list换成tuple,切片操作完全相同, 迭代: 用for 循环迭代数列1-100并打印出7的倍数: for i in range(1,...

Python——继承

Python的继承是多继承机制,一个子类可以同时有多个直接父类;继承可以得到父类定义的方法,子类就可以复用父类的方法。 一、继承的语法 子类:实现继承的类。 父类(基类、超类):被继承的类。 子类继承父类是在定义子类时,将多个父类放在子类之后的圆括号内,如果定义类时,未指定这个类的直接父类,则默认继承object类,所以object类是所有类的父类(直接父...

python继承的练习

继承的父类是上一篇python类和实例里的类 1、冰淇淋小店:冰淇淋小店是一种特殊的餐馆。编写一个名为IceCreamStand的类,让它继承Restaurant类。这两个版本的Restaurant类都可以,挑选你更喜欢的那个即可。添加一个名为flavors的属性,用于存储一个由各种口味的冰淇淋组成的列表。编写一个显示这些冰淇淋的方法。创建一个IceCre...