文章目录
一、导入需要的模块:
-
Urllib和requests模块是python中发起http请求最常见的模块,但是requests模块使用更加方便简单。
-
lxml解析网页
-
docx是创建一个document文档对象
二、网页中找到对应的标签:
(1)、首先我们要先在网页中找到文本所在的范围(如图(有开发者工具的浏览器按下F12即可查看)):
可以看出我们在选中 class = content 的标签时是对应我们需要的文本所在的位置
我们在class = content下面找到文本所在的标签
在 p 标签中我们找到了我们所需要的文字
那么我们就在此写下
texts = root.xpath('//div[@class="content"]/p/text()')
(2)、接下来我们要找到网页的页码超链接:
找到页码超链接之后我们发现他只是一个更改数字的页码链接并不是js
这就好办了
pageNum = [] #建立列表
url = 'https://www.dati56.com/post/13635.html?ipage={}' # 所需要的网址
for i in range(1, 23): #因为页码就只有22页所以这里要限制范围
pageNum.append(i) # 将页码加入到一个列表里
for item in pageNum:
Url = url.format(item) # 将页面数字利用format方法进行填充Url(建议用大小写区分不然下面的url=Url有点问题就只输出第一页的内容)
注意:强调一点,最后一行的Url = url 我是前一个用了大写后面用的小写,如果用成小写,后面运行出来是循环截取但是直截取了第一页的内容,所以这里还是写成大写的(也可以自己去研究一下哈。)
三.、提取文本:
因为小编也是一个初学者,这串代码是在别处借鉴的稍后我会在后面写出出处
if __name__ == '__main__':
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36'}
document = Document()
rs = requests.get(url=Url, headers=headers)
root = etree.HTML(rs.content)
texts = root.xpath('//div[@class="content"]/p/text()')#网址内的分布
for text in texts:
str(text).replace('\xa0\xa0\xa0', '')
document.add_paragraph(text)
print(text)#输出爬取的值
document.save('劳动通论.docx')#导出并创建成word文档
四、下面是源码:
'''
功能:爬取网页中的“文本”并导出成docx
CSDN作者:莫莫先生
修改:Sherry
问题:现还不能一次性在同一个文件下导出,
需要在Pycharm或者Anaconda运行输出后自行复制粘贴
'''
import requests
from lxml import etree
from docx import Document
pageNum = []
url = 'https://www.dati56.com/post/13635.html?ipage={}' # 网址
for i in range(1, 23):
# 将页码加入到一个列表里
pageNum.append(i)
for item in pageNum:
# 将页面数字利用format方法进行填充Url
Url = url.format(item)
if __name__ == '__main__':
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36'}
document = Document()
rs = requests.get(url=Url, headers=headers)
root = etree.HTML(rs.content)
texts = root.xpath('//div[@class="content"]/p/text()')#网址内的分布
for text in texts:
str(text).replace('\xa0\xa0\xa0', '')
document.add_paragraph(text)
print(text)
document.save('劳动通论.docx')
这是原作者:https://blog.csdn.net/weixin_44835732/article/details/103047765
最后如果有什么不懂的、或者有更好的意见,欢迎留言,私信交流。
侵联删