2021云+数:编程网站爬取

来自CloudWiki
跳转至: 导航搜索

1.访问菜鸟教程(https:/www.runoob.com),爬取其Python3实例模块的题目内容,要求输出格式如下图所示。

1、Python Hello World 实例
以下实例为学习Python的第一个实例,即如何输出"Hello World! " :
2、Python 数字求和
以下实例为通过用户输入两个数字,并计算两个数字之和:
3、Python平方根
平方根,又叫二次方根,表示为〔√一〕,如:数学语言为: √―16=4。语言描述为:根号下16=4。

代码:

import requests
from lxml import etreeimport time
#获取题目链接
url = 'https://www.runoob.com/python3/python3-examples.html'web_data = requests.get(url)
dom = etree.HTML(web_data.text, etree.HTMLParser(encoding=utf-8'))#网页解析exerciseList= dom.xpath('//div[@id="content"]/ul/li/a/text(')
#练习题名称
urlList= dom.xpath('/ldiv[@id="content"]/ul/li/a/@href)
#练习题超链接
urlList = ['/python3/'+i if '/python3/' not in i else i for i in urlList ]
urlList = ['https:/www.runoob.com' + i if 'www.runoob.com/" not in i else 'https:'+i for i in urIList]
exerciseString= 'n'.join(exerciseList)
#将练习题名称拼接成一个字符串
with open('exercisePython.txt', 'w') as f:
    f.write(exerciseString)
#爬取题目数据及整理写出
resultList =[]
for url in urlList:
web_data = requests.get(url)
dom = etree.HTMIL(web_data.text, etree.HTMLParser(encoding='utf-8'))#网页源码解析#获取题目及答案
title = dom.xpath('string(/ldiv[@id="content"]/h1)')
#练习题名称
content = dom.xpath('string(//div[@id="content"]/p[2]))
#练习题描述内容
code = dom.xpath('string(/ldiv[@id="content"]//div[@class="example"]//div[@class="hl-main"])) #练习题答案
result = dom.xpath('string(/ldiv[@id="content"]/p[3]))
# 结果描述
output = dom.xpath('string(//div[@id="content"]/pre))
# 目标输出
res = title + '\n'+ content+ 'ln’#将内容进行拼接
resultList.append(res)
time.sleep(1)
print(url, 'n', res)mid = resultList.copyOfor i in range(len(mid)):
mid[i]= str(i+1)+'、'+ mid[i]#加入题目序号
with open('Python编程基础上机题库1.txt', 'w', encoding='utf-8') as f:
f.write('\n'.join(mid))
#将数据写出