准备工具
- 本机环境:Windows10专业版
- 操作系统:64位
- Python版本:python 3.8
- 运行工具:PyCharm 2020.2
步骤分析与代码实现
开始之前先导入一些库
import requests
from lxml import etree
获取网页源代码
打开一个网站分析一下
1就是url
2是文章标题
3是内容
之后会放进代码里,先获取到这个界面的网页
url = requests.get('https://www.chnlib.com/zuowenku/')
html = url.content.decode()#对乱码处理,这里没写内容默认值就是‘UTF-8’
print(html)
-
返回结果
这就是网页的代码,这就证明我们访问到这个页面了。
-
获取作文篇章的url
已经可以获取到网页源代码了,接下来就解析我们要的文章在哪里,可以看到界面是每一个文章都是有一个链接的,F12可以查看网页源代码。点击右上角小箭头,选中网页的作文,可以在右边看见一个标签这就是文章的链接,每一个文章都需要打开一个链接。下面就要解析一下,怎么获取这些链接,通过源代码可以看出他们都是统一的格式都是在一个
查看一下contents发现是一个Element,看不到内容,这个时候就需要遍历这个Element,用for in去取
下面中的 href
- 获取每一个文章的url for content in contents: links = content.xpath('h4/a/@href') #获取超链接 print(links)
这样每一篇文章的url都获取到了,接下来就该获取每一篇文章的标题以及内容。下面仍然用xpath的方式去获取。
- 获取标题和文章内容content = doc.xpath('//*[@id="content"]/p/text()')#获取文本 title = doc.xpath('/html/body/div[4]/div/div[1]/div/div[1]/h1/text()') #获取标题 title1 = [t.replace('\r\n','') for t in title]
- 至此每一篇文章的标题和内容都获取到,最后把获取到的数据保存下来
- 存储数据 with open('download/%s.txt' %title1[0], 'w', encoding='utf-8') as f: for items in content: f.write(items)