面试题(3)--爬虫
来源:互联网 发布:php curl 无法提交 编辑:程序博客网 时间:2024/06/07 00:51
请完成一个程序,并能按步骤实现以下功能:
下载https://en.wikipedia.org/wiki/Machine_translation 页面的内容并保存为mt.html
需要编写代码来下载页面。
统计mt.html中
标签内下所有单词以及数目并存储到mt_word.txt中。
mt_word.txt有如下几点要求:
a) 每个单词一行。单词在前,单词出现的次数在后,中间用Tab(\t)进行分隔。
b) 单词要按照单词数目从多到少的顺序进行排列。比如说单词a出现了100次,单词b出现了10次,则单词a要在单词b的前面。
提取出mt.html中所有的年份信息(比如说页面中的1629, 1951这些的四位数字就是年份)存储到mt_year.txt中。
mt_year.txt有如下几点要求:
a) 每个年份是一行。
a) 年份需要从过去到现在的顺序进行排列。比如说文章中出现了2007和1997,则1997需要排在2007的前面。
要求:
仅限python编程,而且仅仅可以使用python自带的函数或库。
提交可执行的程序以及mt.html, mt_word.txt, mt_year.txt。
限定在一个小时内完成。
# -*- coding: utf-8 -*-"""------------------------------------------------- File Name: requests_spider Description : 开发环境为Windows10+python3.6.1 Author : Victor date: 2017/9/16------------------------------------------------- Change Activity: 2017/9/16:-------------------------------------------------"""import reimport requestsfrom lxml import etreeif __name__ == '__main__': # 1 使用requests第三方库,获取网页内容保存为mt.html。 response = requests.get(url="https://en.wikipedia.org/wiki/Machine_translation") with open('mt.html', 'wb') as f: f.write(response.content) # 2 提取所有p标签下的文本内容,拼接为一个字符串 p_list = etree.HTML(response.content).xpath("//p/text()") string_p = ''.join(p_list) # 3 截取出每一个单词,以单词为键,出现次数为值存入字典中 word_dirt = {} for word in string_p.split(): # 去除单词前后的符号,(全部转换成小写,具体看需求) word = word.strip(''',.:'()""/;''').lower() if not word_dirt.__contains__(word): word_dirt[word] = 1 else: word_dirt[word] += 1 # 4 存入mt_word.txt文件中 with open('mt_word.txt', 'w') as f: # 对word_dirt进行排序得到一个列表,然后遍历列表,将内容写入文件中 for word_num in sorted(word_dirt.items(), key=lambda item: item[1], reverse=True): line = ('%s\t%s' % (word_num[0], word_num[1])) + '\n' f.write(line) # 5 提取出mt.html中所有的年份信息(比如说页面中的1629, 1951这些的四位数字就是年份)存储到mt_year.txt中 num_year = re.compile(r'\d{4}') # 可优化 num_list = re.findall(num_year, str(response.content)) num_list = list(set(num_list)) # 去重 num_list.sort() # 排序 注意:sort()是没有返回值的 with open('mt_year.txt', 'w')as f: for year_num in num_list: # 逐条保存 f.write(year_num + '\n')
阅读全文
1 0
- 面试题(3)--爬虫
- 面试题(3)
- 面试题(3)
- 面试题(3)
- 大数据爬虫实习面试题
- 3-js面试题(前端面试题带答案)
- Java面试题(3)
- 算法面试题(3)
- ios面试题(3)
- .NET面试题(3)
- iOS 面试题(3)
- Android面试题(3)
- Android面试题(3)
- 经典面试题(3)
- java面试题(3)
- java面试题(3)
- python面试题(3)
- [ 面试题 ] 常见面试题 (一)
- redis 消息队列发布订阅模式spring boot实现
- 9.13第二周java作业
- Array Indexing
- C++回调函数学习
- 微信隐私保护指引 系必读消息不点“同意”不能用
- 面试题(3)--爬虫
- PHP+mysql实现简单的留言板
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛
- Glide实现查看图片和保存图片到手机(两种方式, 推荐方式一)
- 练习4
- POJ1005-I Think I Need a Houseboat
- Tour UVA
- 007-SDK框架之LYWSDKInterfaceProtocol.cpp
- c# winform 中的坐标系