栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python爬取托福阅读练习题

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python爬取托福阅读练习题

相信考托的老铁们都知道题目的可贵,在这里跟大家分享一下托福tpo爬虫,这里爬取的是阅读。

首先设置请求头。ua自行在chrome开发者复制粘贴,这里不赘述。

headers = {
	'Host':'top.zhan.com',
	'Referer':'http://top.zhan.com/toefl/speak/task12.html',
	'User-Agent':'',
}

接下来,定义请求页面函数。第一个参数是题目总页面数值,第二个参数是小题分页面数值。

def get_page(num,q_num):
	url = f'http://top.zhan.com/toefl/read/practicereview-{num}-13-0-{q_num}.html'
	try:
		response = requests.get(url, headers=headers)
		if response.status_code == 200:
			return response.text
	except requests.ConnectionError as e:
		print('Error', e.args)

请求搞定了,就要定义阅读文章获取函数,因为只想获取一遍,所以单独拿出来定义二没有放入循环。这里因为此网站的html解析时有一小部分驴唇不对马嘴,所以用了各种花样来获取相关值。

def get_article(text, q_num):
	doc = pq(text)
	if q_num == 0:
		article = {}
		article['来源'] = doc('a:contains(阅读真题)').text()
		article['题目'] = doc('.article_tit').text()

		#利用正则表达式替换br标签为---,代替换行!
		html = re.sub('
', '---------------------------',text) doc_formatted = pq(html) article['article'] = doc_formatted('.article').text() return article else: return ''

接下来获取题目和选项。

def parse_page(text):
	doc = pq(text)
	info = {}
	info['问题'] = doc('.left.text').text()
	info['选项'] = doc('.ops.sec').text()
	return info

最后定义主程序,注意这里num的数值要根据网站不同套题的网址自行判断一下,缺少连贯性。而q这里,有的套题有14题有的10题,也需要自行调整。 

def main():
	for num in range(900,903):
		for q in range(0,14):
			try:
				text = get_page(num,q) 
				article = get_article(text, q)
				results = parse_page(text)
			except TypeError as e:
				print('---')
			else:
				
				print(f"n{article}")
				for key, value in results.items():
					print(key, value)					


 题目整出来之后,还需要正则表达式来清洗一下,这里不做赘述啦。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/313387.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号