用python来抓取知乎日报,python抓取知日报,今天来和大家一起研究一下
用python来抓取知乎日报,python抓取知日报,今天来和大家一起研究一下
今天来和大家一起研究一下怎么样使用python抓取知乎日报,去除图片,去除html转义符,还有乱七八糟有用没用的链接等等。有问题请提出,玩python没多久~希望得到更多的建议。
1.
2.[代码]Python 知乎日报爬虫
# -*- coding:utf-8 -*-import urllib2import reimport HTMLParserimport sysreload(sys)sys.setdefaultencoding('utf8')#通过python请求获取HTMLdef 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#通过python HTML解析出每条日报的链接def getUrls(html): pattern = re.compile('http://daily.zhihu.com/story/(.*?)" >',re.S) items = re.findall(pattern,html) urls = [] for item in items: urls.append('http://daily.zhihu.com/story/' + item) return urls#python解析日报内容""" www.iplaypy.com """def getContent(url): html = getHtml(url) #先取出标题打印出来 pattern = re.compile('<h1 class="headline-title">(.*?)</h1>') items = re.findall(pattern,html) print '********************************************************************************************************************************************' print '****************************************************'+items[0]+'****************************************************' print '********************************************************************************************************************************************' #开始取文章内容 pattern = re.compile('<div.*?content">\n(.*?)</div>',re.S) items_withtag = re.findall(pattern,html) # print items_withtag[0] for item in items_withtag: for content in characterProcessing(item): print content#去掉文章内容中的标签def characterProcessing(html): htmlParser = HTMLParser.HTMLParser() #先去掉<p>和<li> pattern = re.compile('<p>(.*?)</p>|<li>(.*?)</li>.*?',re.S) items = re.findall(pattern,html) result = [] for index in items: if index != '': for content in index: tag = re.search('<.*?>',content) http = re.search('<.*?http.*?',content) html_tag = re.search('&',content) #处理html转义符 if html_tag: content = htmlParser.unescape(content) #有链接直接跳过不做收集 if http: continue elif tag: #去掉<p>或<li>包裹的其他的标签,比如常见的<strong> pattern = re.compile('(.*?)<.*?>(.*?)</.*?>(.*)') items = re.findall(pattern,content) content_tags = '' if len(items)>0: for item in items: if len(item)>0: for item_s in item: content_tags = content_tags + item_s else: content_tags = content_tags + item_s content_tags = re.sub('<.*?>','',content_tags) result.append(content_tags) else: continue else: result.append(content) return resultdef main(): url = "http://zhihudaily.ahorn.me" html = getHtml(url) urls = getUrls(html) for url in urls: getContent(url)if __name__ == "__main__": #编橙之家python之家,提示启动主程序 main()
编橙之家文章,
相关内容
- 查看python源代码所依赖的模块,python源代码模块,查看
- python3 bs4 抓取豆瓣MM图片,,python3 bs4
- python编写 ElasticSearch 数据导入导出功能,,python编写
- python来查看Linux系统内存使用情况,pythonlinux,经常系统
- 无序的python字典中取文件倒数第几行,python第几行,无序
- 将3个.py文件合并成一个文件中的3列 笨办法,.py3列
- python 的map和reduce函数把str转为float类型,reducefloat,<
- 闲来无事整一下贪心算法 用python实现的,闲来无事
- python程序记录QQ空间条说说的访问详情,python详情,pyt
- 用python完成计算一个图形中三角形数目,python三角形
评论关闭