吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 685|回复: 8
收起左侧

[求助] css或者xpath提取网页中有用的文档部分,总是出错

[复制链接]
wanpojie 发表于 2022-12-10 22:45
目标网页 https://www.dulifei.com/standard/detail/102



[HTML] 纯文本查看 复制代码
<div class="cke_wysiwyg_div cke_reset cke_enable_context_menu cke_editable cke_editable_themed cke_contents_ltr cke_show_borders" hidefocus="true" contenteditable="false" tabindex="0" spellcheck="false" style="position: relative;" role="textbox" aria-label="所见即所得编辑器, editor01" title="所见即所得编辑器, editor01" aria-describedby="cke_45"><p style="text-align:center"><span style="font-size:22px">国家计委关于印发《招标代理服务收费管理暂行办法》的通知</span></p><p style="text-align:center">《招标代理服务收费管理暂行办法》(计价格[2002]1980号)</p><p style="text-align:center"><br></p><p>各省、自治区、直辖市计委、物价局:</p><p>  为规范招标代理服务收费行为,维护招标人、投标人和招标代理机构的合法权益,促进招标代理行业的健康发展,我委制定了《招标代理服务收费管理暂行办法》(以下简称《办法》),现印发给你们,请按照执行。</p><p>  根据《国家计委、财政部关于整顿招标投标收费的通知》(计价格[2002]520号)规定,实行由中标人付费的机电设备招标代理服务,可暂按现行有关规定执行,至2004年1月1日统一执行委托人付费。机电设备招标代理服务收费标准,自《办法》生效之日起按《办法》规定执行。</p><p>  药品集中招标采购收费暂按现行有关规定执行。</p><p>  特此通知。</p><p>  附件:招标代理服务收费管理暂行办法。</p><p style="text-align:right">中华人民共和国国家发展计划委员会<br>二○○二年十月十五日</p><p><br></p><p>附件:</p><p style="text-align:center"><span style="font-size:20px">招标代理服务收费管理暂行办法</span></p><p>  第一条 为规范招标代理服务收费行为,维护招标人、投标人和招标代理机构的合法权益,根据《中华人民共和国价格法》、《中华人民共和国招标投标法》及有关法律、行政法规,制定本办法。</p><p>  第二条 中华人民共和国境内发生的各类招标代理服务的收费行为,适用本办法。</p><p>   第三条 本办法所称招标代理服务收费,是指招标代理机构接受招标人委托,从事编制招标文件(包括编制资格预审文件和标底),审查投标人资格,组织投标人踏勘现场并答疑,组织开标、评标、定标,以及提供招标前期咨询、协调合同的签订等业务所收取的费用。</p><p>   第四条 招标代理机构从事招标代理业务并收取服务费用的,必须符合《中华人民共和国招标投标法》第十三条、第十四条规定的条件,具备独立法人资格和相应资质。</p><p>  第五条 招标代理机构应当在招标人委托的范围内办理招标事宜,遵守国家法律、法规及政策规定,符合招标人的技术、质量要求。</p><p>  第六条 招标代理服务应当遵循公开、公正、平等、自愿、有偿的原则。严格禁止任何单位和个人为招标人强制指定招标代理机构或强制具有自行招标资格的单位接受代理并收取费用。</p><p>  第七条 招标代理服务收费按照招标代理业务性质分为:</p><p>  (一)各类土木工程、建筑工程、设备安装、管道线路敷设、装饰装修等建设以及附带服务的工程招标代理服务收费。</p><p>  (二)原材料、产品、设备和固态、液态或气态物体和电力等货物及其附带服务的货物招标代理服务收费。</p><p>  (三)工程勘察、设计、咨询、监理,矿业权、土地使用权出让、转让和保险等工程和货物以外的服务招标代理服务收费。</p><p>  第八条 招标代理服务收费实行政府指导价。</p><p>  第九条 招标代理服务收费采用差额定率累进计费方式。收费标准按本办法附件规定执行,上下浮动幅度不超过20%。具体收费额由招标代理机构和招标委托人在规定的收费标准和浮动幅度内协商确定。</p><p>  出售招标文件可以收取编制成本费,具体定价办法由省、自治区、直辖市价格主管部门按照不以营利为目的的原则制定。</p><p>   第十条 招标代理服务实行“谁委托谁付费”。工程招标委托人支付的招标代理服务费,可计入工程前期费用。货物招标和服务招标委托人支付的招标代理服务费,按照财政部门规定列支。</p><p>  第十一条 招标代理机构按规定收取代理费用和出售招标文件后,不得再要求招标委托人无偿提供食宿、交通等或收取其他费用。</p><p>  第十二条 招标代理业务中有超出本办法第三条规定的要求的,招标代理机构可与招标委托人就所增加的工作量,另行协商确定服务费用。</p><p>  第十三条 招标代理服务收费纠纷,依据《中华人民共和国价格法》、《中华人民共和国合同法》及其他有关法律、法规处理。</p><p>  第十四条 各级政府有关部门或者其授权、委托的单位,按照国务院关于招标投标管理职能分工规定履行监督职能,要求招标投标当事人履行审批、备案及其他手续的,一律不得收费。</p><p>  违反前款规定,擅自设立收费项目、制定收费标准以及收取管理性费用的,由政府价格主管部门予以处罚。</p><p>  第十五条 招标代理机构违反本办法规定的,由政府价格主管部门依据《中华人民共和国价格法》和《价格违法行为行政处罚规定》予以查处。</p><p>  第十六条 本办法由国家计委负责解释。</p><p>  第十七条 本办法自2003年1月1日起执行。国家计委及有关部门,各省、自治区、直辖市价格主管部门制定的相关规定,凡与本办法相抵触的,自本办法生效之日起废止。</p><p><br></p><p><br>附:</p><p style="text-align:center"><span style="font-size:20px">招标代理服务收费标准</span></p><p><br></p><table border="1" cellspacing="0" style="width:100%"><tbody><tr><td><p>       服</p><p>费      务</p><p>       类</p><p>率      型   </p><p>中标金额(万元)</p></td><td><p>货物招标</p></td><td><p>服务招标</p></td><td><p>工程招标</p></td></tr><tr><td><p>100以下</p></td><td><p>1.5%</p></td><td><p>1.5%</p></td><td><p>1.0%</p></td></tr><tr><td><p>100-500</p></td><td><p>1.1%</p></td><td><p>0.8%</p></td><td><p>0.7%</p></td></tr><tr><td><p>500-1000</p></td><td><p>0.8%</p></td><td><p>0.45%</p></td><td><p>0.55%</p></td></tr><tr><td><p>1000-5000</p></td><td><p>0.5%</p></td><td><p>0.25%</p></td><td><p>0.35%</p></td></tr><tr><td><p>5000-10000</p></td><td><p>0.25%</p></td><td><p>0.1%</p></td><td><p>0.2%</p></td></tr><tr><td><p>10000-100000</p></td><td><p>0.05%</p></td><td><p>0.05%</p></td><td><p>0.05%</p></td></tr><tr><td><p>1000000以上</p></td><td><p>0.01%</p></td><td><p>0.01%</p></td><td><p>0.01%</p></td></tr></tbody></table><p>注:1.按本表费率计算的收费为招标代理服务全过程的收费基准价格,单独提供编制招标文件(有标底的含标底)服务的,可按规定标准的30%计收。</p><p>2.招标代理服务收费按差额定率累进法计算。例如:某工程招标代理业务中标金额为6000万元,计算招标代理服务收费额如下:</p><p>100万元×1.0%=1万元</p><p>(500-100)万元×0.7%=2.8万元</p><p>(1000-500)×0.55%=2.75万元</p><p>(5000-1000)×0.35%=14万元</p><p>(6000-5000)×0.2%=2万元</p><p>合计收费=1+2.8+2.75+14+2=22.55(万元)</p></div>




[Python] 纯文本查看 复制代码
import requests  # pip install requests
import parsel  # pip install parsel
import time

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE'
}

html_template = """
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
</head>
<body>
{content}
</body>
</html>
"""

def get_response(html_url):   #获取请求
    response = requests.get(url=html_url, headers=headers)
    response.encoding = response.apparent_encoding
    return response
    print('正在执行get_response')


def save(name, content):
    with open(name + '.txt', mode='a', encoding='utf-8') as f:
        f.write(content)
        f.write('\n')
        time.sleep(10)
    print('正在执行save')


def get_novel_url(html_url):
    response = get_response(html_url)
    selector = parsel.Selector(response.text)
    name = 'ceshiname'
    #content = selector.css('#cke_1_contents > div').get()   #这里想提取出网页中文档的部分,总是出问题
    content = selector.xpath('//*[@id="cke_1_contents"]/div/p').getall()  #这里想提取出网页中文档的部分,总是出问题
    print(content)
    html = html_template.format(content=content)
    save(name, content)
    print('正在执行get_novel_url')


if __name__ == '__main__':
    url = "https://www.dulifei.com/standard/detail/102"
    get_novel_url(url)
    print('正在执行主程序')


目标网页 https://www.dulifei.com/standard/detail/102
想构建成一个标准的html,去掉网页中其他的东西,然后通过pdfkit转换为pdf文件,但是css或者xpath选择出来的要不是只有p标签,div标签或取出来的列表是空的,是哪里出了问题

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

cloud2010 发表于 2022-12-11 18:02

浏览器F12选择元素可以粘出xpath,试下好用不

如果好用再一点一点优化
justme 发表于 2022-12-11 20:05
[Python] 纯文本查看 复制代码
//div[@class="essay_all"]
 楼主| wanpojie 发表于 2022-12-12 21:23

按照这个爬取下来的就不是单纯的文档部分了,是有选取框的
image.png



justme 发表于 2022-12-13 20:10
wanpojie 发表于 2022-12-12 21:23
按照这个爬取下来的就不是单纯的文档部分了,是有选取框的

[Asm] 纯文本查看 复制代码
//div[@class="essay_all"]//textarea/*
justme 发表于 2022-12-13 20:12
Snipaste_2022-12-13_20-11-30.png Snipaste_2022-12-13_20-11-38.png
 楼主| wanpojie 发表于 2022-12-15 09:44

感谢感谢,area还没见过这个
 楼主| wanpojie 发表于 2022-12-17 16:41

老哥方便把你这一行代码写全吗,我测试了好多次没成功.

[Python] 纯文本查看 复制代码
import requests  # pip install requests
import parsel  # pip install parsel
import time
import re
import os
import pdfkit # pip install pdfkit
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE'
}
filename = 'pdf\\'
filename_1 = 'html\\'
if not os.path.exists(filename):
    os.mkdir(filename)

if not os.path.exists(filename_1):
    os.mkdir(filename_1)

html_str = """
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
</head>
<body>
{content}
</body>
</html>
"""
html_url = 'https://www.dulifei.com/standard/detail/102'
response = requests.get(url=html_url, headers=headers)
response.encoding = response.apparent_encoding
selector = parsel.Selector(response.text)

#content = selector.css('.editor01').get()
content = selector.xpath('//*[@id="editor01"]/text()[1]').getall()
print(content)
html_content = html_str.format(content=content)
print(html_content)
 楼主| wanpojie 发表于 2022-12-17 17:14

搞定,感谢老哥指点

[Python] 纯文本查看 复制代码
import requests  # pip install requests
import parsel  # pip install parsel
import time
import re
import os
import pdfkit # pip install pdfkit
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE'
}
filename = 'pdf\\'
filename_1 = 'html\\'
if not os.path.exists(filename):
    os.mkdir(filename)

if not os.path.exists(filename_1):
    os.mkdir(filename_1)

html_str = """
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
</head>
<body>
{content}
</body>
</html>
"""
html_url = 'https://www.dulifei.com/standard/detail/102'
response = requests.get(url=html_url, headers=headers)
response.encoding = response.apparent_encoding
selector = parsel.Selector(response.text)

name1 = selector.css('#mine_project > h1 > strong::text').get()
mode = re.compile(r'[\\\/\:\*\?\"\<\>\|]')
name1 = re.sub(mode, '_', name1)      #不符合命名规范的地方修改为下划线

name2 = selector.css('#mine_project > h2 > strong::text').get()
mode = re.compile(r'[\\\/\:\*\?\"\<\>\|]')
name2 = re.sub(mode, '_', name2)      #不符合命名规范的地方修改为下划线

name = name1 + '_' + name2
print(name)

#content = selector.css('.editor01').get()
content = selector.xpath('//div[@class="essay_all"]//textarea/*').getall()
print(type(content))
print(len(content))

html_content = html_str.format(content=content)
html_content = html_content.replace('\\xa0','')
html_content = html_content.replace('\\r\\n\\t\\t\\t','')
html_content = html_content.replace('\\r\\n\\t\\t','')
html_content = html_content.replace('\\r\\n\\t','')
html_content = html_content.replace('\\r\\n','')
html_content = html_content.replace('\', \'','')

html_path = filename_1 + name + '.html'
pdf_path = filename + name + '.pdf'
with open(html_path, mode='w', encoding='utf-8') as f:
    f.write(html_content)
    print('正在保存: ')
config = pdfkit.configuration(wkhtmltopdf=r'C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe')
pdfkit.from_file(html_path, pdf_path, configuration=config)

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 04:33

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表