Python爬虫练习1_小作文下载
发表时间:2020-10-19
发布人:葵宇科技
浏览次数:52
作文下载
- 准备工具
- 步骤分析与代码实现
准备工具
- 本机环境: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
可以查看网页源代码。点击右上角小箭头,选中网页的作文,可以在右边看见一个<a>
标签这就是文章的链接,每一个文章都需要打开一个链接。
下面就要解析一下,怎么获取这些链接,通过源代码可以看出他们都是统一的格式都是在一个<div>
下面有一个<h4>
再下面获取<a>
,下面就用xpath来获取这个<h4>
标签,简单的方法就是在页面上右击<h4>
有一个copy-> copy xpath 可以直接获取xpath路径- 构造一个xpath用来解析
doc = etree.HTML(html) #构造xpath解析对象@选取对象 contents = doc.xpath('//*[@class="list-group"]/div') print(contents)
查看一下contents
发现是一个Element
,看不到内容,这个时候就需要遍历这个Element
,用for in
去取<h4>
下面<a>
中的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)