首页 > 代码库 > Python爬虫抓取 python tutorial中文版,保存为word
Python爬虫抓取 python tutorial中文版,保存为word
看到了中文版的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 *********** 进行安装,
注意:
*************代表的是安装文件的全称。
安装的时候再命令行下一定要切换到下载文件所在的目录下,否则会报错。
Python爬虫抓取 python tutorial中文版,保存为word