繁体   English   中英

如何使用 html 元素中的网页抓取信息并将其保存到 Excel 行中使用 Beautifulsoup 和任何 ZBF57C906FADA585DEED96Z37 编写器

[英]How can I webscrape information in the html element and save it to an Excel row using Beautifulsoup and any excel writer(Pandas)?

我是 python 的新手,我正在为我的项目做这件事。 有人可以帮我将它保存到 excel 文件吗?

这对于多个站点 URL 是必需的,因此需要将每个信息添加到 excel 的新行中。 示例 HTML 代码附在下面。 请帮助我将其保存到 excel 行和列以及如何使用 for 循环对其进行迭代。

<div class="col-sm-8 lft">
<div class="det-text group-effect1 arrived">
    <div class="block">
        <p class="head">Business Analyst</p>
    </div>
    <div class="block" style="display: none">
    </div>
    <div class="block">
        <p class="head">Posted on:</p>
        <p>19/01/2022</p>
    </div>
    <div class="block">
        <p class="head">Closing on:</p>
        <p>20/02/2022</p>
    </div>
    <div class="block">
        <p class="head">Contact email:</p>
        <a href="mailto:jobs@abc.com" target="_blank">jobs@abc.com</a>
        <br>
        </div>
        <div class="block line" style="display: none"/>
        <div class="block">
            <p class="head">Brief description :</p>
            <p>
                <strong>Business Analyst (3-5 years)</strong>
                <br>
                    <br>
                        Responsibilities:</p>
                    <p>· Evaluating business processes, anticipating requirements, uncovering areas for improvement, and developing and implementing solutions.</p>
                    <p>· Leading reviews of business processes and developing optimization strategies.</p>
                    <p>· Staying up-to-date on the latest process and IT advancements.</p>
                    <p>· Conducting meetings and presentations to share ideas and findings.</p>
                    <p>· Performing requirements analysis.</p>
                    <p>· Applying methodologies such as Unified Modeling Language and Rational Unified Process, to prepare detailed specifications using case statements and related documentation and communicating the results.</p>
                    <p>· Effectively communicating insights and plans to cross-functional stakeholders.</p>
                    <p>· Gathering critical information from meetings and producing useful reports.</p>
                    <p>· Working closely with clients, technicians, and managerial staff.</p>
                    <p>· Providing leadership, training, coaching, and guidance to junior staff.</p>
                    <p>· Ensuring solutions meet business needs and requirements.</p>
                    <p>· Performing user acceptance testing.</p>
                    <p>· Managing projects, developing project plans, and monitoring performance.</p>
                    <p>· Updating, implementing, and maintaining procedures.</p>
                    <p>· Prioritizing initiatives based on business needs and requirements.</p>
                    <p>· People skills, with the ability to engage diplomatically with stakeholders and communicate changes that may not be aligned with the original expectations</p>
                    <p>· Managing competing resources and priorities.</p>
                    <p>· Monitoring deliverables and ensuring timely completion of projects.</p>
                </div>
                <div class="block" style="display: none">
                </div>
                <div class="block">
                    <p class="head">Preferred skills</p>
                    <p/>
                    <p>Business Analyst Requirements:</p>
                    <p>· A bachelor’s degree in business or related field or an MBA with 3-5 years of relevant experience in Financial domain.</p>
                    <p>· Exceptional analytical and conceptual thinking skills.</p>
                    <p>· Ability to influence stakeholders and work closely to agree on acceptable solutions.</p>
                    <p>· Advanced technical skills.</p>
                    <p>· Excellent documentation skills.</p>
                    <p>· Experience creating detailed reports and giving presentations.</p>
                    <p>· Competency in Microsoft applications including Word, Excel, and PPT.</p>
                    <p>· A track record of following through on commitments.</p>
                    <p>· Excellent planning, organizational, and time management skills.</p>
                    <p>· A history of leading and supporting successful projects.</p>
                    <p/>
                </div>
                <div class="block" style="display: none">
                </div>
                <div class="block" style="display: none">
                </div>
                <div class="block" style="display: none">
                </div>
                <div class="block" style="display: none">
                </div>
                <div class="block">
                </div>
                <div class="block" style="display: none">
                </div>
            </div>
        </div>

我建议您直接使用openpyxl而不是通过 Pandas,这将使您更好地控制 Excel 文件的格式。

对于您提供的 HTML,以下是一种可能的方法来帮助您入门:

from bs4 import BeautifulSoup
import openpyxl
from openpyxl.styles.borders import Border, Side
from openpyxl.utils import get_column_letter
from openpyxl.styles import Alignment


html = """<div class="col-sm-8 lft">
<div class="det-text group-effect1 arrived">
    <div class="block">
        <p class="head">Business Analyst</p>
    </div>
    <div class="block" style="display: none">
    </div>
    <div class="block">
        <p class="head">Posted on:</p>
        <p>19/01/2022</p>
    </div>
    <div class="block">
        <p class="head">Closing on:</p>
        <p>20/02/2022</p>
    </div>
    <div class="block">
        <p class="head">Contact email:</p>
        <a href="mailto:jobs@abc.com" target="_blank">jobs@abc.com</a>
        <br>
        </div>
        <div class="block line" style="display: none"/>
        <div class="block">
            <p class="head">Brief description :</p>
            <p>
                <strong>Business Analyst (3-5 years)</strong>
                <br>
                    <br>
                        Responsibilities:</p>
                    <p>· Evaluating business processes, anticipating requirements, uncovering areas for improvement, and developing and implementing solutions.</p>
                    <p>· Leading reviews of business processes and developing optimization strategies.</p>
                    <p>· Staying up-to-date on the latest process and IT advancements.</p>
                    <p>· Conducting meetings and presentations to share ideas and findings.</p>
                    <p>· Performing requirements analysis.</p>
                    <p>· Applying methodologies such as Unified Modeling Language and Rational Unified Process, to prepare detailed specifications using case statements and related documentation and communicating the results.</p>
                    <p>· Effectively communicating insights and plans to cross-functional stakeholders.</p>
                    <p>· Gathering critical information from meetings and producing useful reports.</p>
                    <p>· Working closely with clients, technicians, and managerial staff.</p>
                    <p>· Providing leadership, training, coaching, and guidance to junior staff.</p>
                    <p>· Ensuring solutions meet business needs and requirements.</p>
                    <p>· Performing user acceptance testing.</p>
                    <p>· Managing projects, developing project plans, and monitoring performance.</p>
                    <p>· Updating, implementing, and maintaining procedures.</p>
                    <p>· Prioritizing initiatives based on business needs and requirements.</p>
                    <p>· People skills, with the ability to engage diplomatically with stakeholders and communicate changes that may not be aligned with the original expectations</p>
                    <p>· Managing competing resources and priorities.</p>
                    <p>· Monitoring deliverables and ensuring timely completion of projects.</p>
                </div>
                <div class="block" style="display: none">
                </div>
                <div class="block">
                    <p class="head">Preferred skills</p>
                    <p/>
                    <p>Business Analyst Requirements:</p>
                    <p>· A bachelor’s degree in business or related field or an MBA with 3-5 years of relevant experience in Financial domain.</p>
                    <p>· Exceptional analytical and conceptual thinking skills.</p>
                    <p>· Ability to influence stakeholders and work closely to agree on acceptable solutions.</p>
                    <p>· Advanced technical skills.</p>
                    <p>· Excellent documentation skills.</p>
                    <p>· Experience creating detailed reports and giving presentations.</p>
                    <p>· Competency in Microsoft applications including Word, Excel, and PPT.</p>
                    <p>· A track record of following through on commitments.</p>
                    <p>· Excellent planning, organizational, and time management skills.</p>
                    <p>· A history of leading and supporting successful projects.</p>
                    <p/>
                </div>
                <div class="block" style="display: none">
                </div>
                <div class="block" style="display: none">
                </div>
                <div class="block" style="display: none">
                </div>
                <div class="block" style="display: none">
                </div>
                <div class="block">
                </div>
                <div class="block" style="display: none">
                </div>
            </div>
        </div>"""
        
soup = BeautifulSoup(html, "html.parser")
data = []

for div_block in soup.find_all('div', class_='block', style=None):
    data.append([line.strip() for line in div_block.stripped_strings])

wb = openpyxl.Workbook()

# Write a header row
columns = [
    ("SL No", 10), 
    ("Job Title", 25),
    ("Company Name", 20),
    ("Posted on", 13),
    ("Closing on", 13),
    ("Location", 20),
    ("Description", 40),
    ("Skills", 70),
    ("Link Email", 30),
]

thin_border = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'), bottom=Side(style='thin'))    
ws = wb.active

for col_number, (value, width) in enumerate(columns, start=1):
    ws.cell(column=col_number, row=1, value=value).border = thin_border
    ws.column_dimensions[get_column_letter(col_number)].width = width

# Write a data row    
row = [
    '',             #SL No
    data[0][0],     #Job title
    '',             #...
    data[1][1],
    data[2][1],
    '',
    data[4][1],
    '\n'.join(data[5][1:]),
    data[3][1],
]

for col_number, value in enumerate(row, start=1):
    cell = ws.cell(column=col_number, row=2, value=value)
    cell.border = thin_border
    cell.alignment = Alignment(wrapText=True)

wb.save('output.xlsx')

这会给你一个 Excel 表,如下所示:

Excel 截图

通过额外的工作,您可以应用您喜欢的任何样式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM