看到了中文版的python tutorial,发现是网页版的,刚好最近在学习爬虫,想着不如抓取到本地
首先是网页的内容
查看网页源码后发现可以使用BeautifulSoup来获取文档的标题和内容,并保存为doc文件。
这里需要使用from bs4 import BeautifulSoup 来导入该模块
具体代码如下:
# 输出所在网址的内容
from bs4 import BeautifulSoup
def introduce(url):
res = requests.get(url)
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text, 'html.parser')
title = soup.select('h1')[0].text
content = '\n '.join([p.text.strip() for p in soup.select('.section')])
#print(title)
#print(content)
接下来是使用for循环遍历所有符合的内容以获取目录所指向的链接,所得到的链接是不完整的,故给其加上主站的链接,生成有效的url,储存于列表address之中。这里我对比后使用了xpath来抓取目录的地址,故用 from lxml import etree 导入该模块
# 返回目录所对应的地址
def get_url(selector):
sites = selector.xpath('//div[@class="toctree-wrapper compound"]/ul/li')
address = []
for site in sites:
directory = ''.join(site.xpath('a/text()'))
new_url = site.xpath('a/@href')
address.append('http://www.pythondoc.com/pythontutorial3/' + ''.join(new_url))
return address
然后在主函数中调用get_url(),对其中的所有url遍历,调用introduce()函数,输出全部文本内容
def main():
url = 'http://www.pythondoc.com/pythontutorial3/index.html#'
html = requests.get(url)
html.encoding = 'utf-8'
selector = etree.HTML(html.text)
introduce(url)
url_list = get_url(selector)
for url in url_list:
introduce(url) if __name__ == '__main__':
main()
最后就是将输出的东西写到.doc中了,这里调用os模块,将写入文件的命令放置于introduce()函数中去
import os #将其放置于顶部 with open('python.doc', 'a+', encoding='utf-8') as f:
f.write(content)
至此,就完成了对中文版python tutorial内容的获取,成功写进本地文件中去,对于我这种经常性断网断点的人来说还是很不错的!还可以放在手机里看,哈哈哈
对于bs4可以直接在命令行使用 pip install bs4 命令进行安装
而在windows平台下 lxml 的安装会出现许多错误,建议在windows下Python的扩展包网站下载对应版本的lxml.whl文件,之后在本地使用 pip install *********** 进行安装,
注意:
*************代表的是安装文件的全称。
安装的时候再命令行下一定要切换到下载文件所在的目录下,否则会报错。