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 *********** 进行安装,

注意:

  *************代表的是安装文件的全称。

  安装的时候再命令行下一定要切换到下载文件所在的目录下,否则会报错。

 

posted @ 2016-11-27 00:30  wananbo  阅读(2741)  评论(0编辑  收藏  举报