有pandas想求助大佬?
链接
https://gaokao.chsi.com.cn/zsgs/zhangcheng/listVerifedZszc
--infoId-4543757002,method-view,schId-1940.dhtml
有大佬知道<div class="content zszc-content UEditor">下的全部内容怎么用xpath获取吗?怎么写为word文档,求大佬告知,谢谢!
上面是文章链接
回答:
你可以用Python 的 requests 和 lxml 库实现这个方案,我给你一段我学习时候看过的前人的代码(声明一下,这段代码大概是一年前在另外一个博客网站找pdf转word资料时候找到的,由于忘记链接了,所以备注形式表达对原创者的敬意)
import requestsfrom lxml import etree
url = 'https://gaokao.chsi.com.cn/zsgs/zhangcheng/listVerifedZszc--i...,method-view,schId-1940.dhtml'
response = requests.get(url)
html = response.content.decode('utf-8')
tree = etree.HTML(html)
# 使用 XPath 获取目标元素
content = tree.xpath('//div[@class="content zszc-content UEditor"]')[0]
# 将内容写入文件
with open('content.docx', 'w', encoding='utf-8') as f:
f.write(etree.tostring(content, method='html', encoding='unicode'))
这段代码逻辑简单清晰,相信你也能了解的,当然如果网站本身有反爬机制,就得考虑其他办法了。
——————————————————————————————————————————————————————————————————
下划线:抱歉我误解了楼主的需求,对于获取 div 标签下所有子节点并将其写入 word 文档,可以如下方法操作
头文件中加一个from docx import Document
然后写(这部分的目的是用前文回答中的XPath 获取整个内容所在 div 元素)
root = lxml.html.fromstring(html_content)content_div = root.xpath('//div[@class="content zszc-content UEditor"]')[0]
nodes = content_div.xpath('node()')
最后是这部分的关键,目的是新建文档,遍历div元素读取到文档中,进行文本符号格式转换清洗整理数据,然后完成保存操作。我们命名保存文件为output。
doc = Document()for node in nodes:
if isinstance(node, lxml.etree._Element):
element_html = lxml.html.tostring(node, pretty_print=True, encoding='unicode')
element_html = element_html.strip()
paragraph = doc.add_paragraph(element_html)
else:
paragraph = doc.add_paragraph(node)
doc.save('output.docx')
回答:
用BeautifulSoup4会更轻松点,不需要用到xpath
pip install BeautifulSoup
from bs4 import BeautifulSoup...
...
html = resp.content
soup = BeautifulSoup(html)
target = soup.find('div', attrs={'class': 'content zszc-content UEditor'})
print(target.text)
以上是 有pandas想求助大佬? 的全部内容, 来源链接: utcz.com/p/938946.html