使用BeautifulSoup4进行数据抓取的问题

埃德加·范宁(Edgar Vanin):

所以,基本上,我正在尝试搜寻工作网站,我的目标是检索职位,公司,薪水,位置。我正计划将其插入csv文件,因此可以对其进行一些绘图。我当前的代码是:

from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup

my_url = 'https://www.cvbankas.lt/?miestas=Vilnius&padalinys%5B0%5D=76&page=1'

#Opening up connection, grabbing the page
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()

#HTML parser 
page_soup = soup(page_html, 'html.parser')
# grabs each product
containers = page_soup.findAll('div',{'class':'list_a_wrapper'})

contain = containers[0]
container = containers[0]
print(container.h3)

并返回我:

<h3 class="list_h3" lang="en">Senior Talent Manager</h3>

如果我问:container.h3['class']这返回['h3_class'],如果我问:container.h3['lang']我得到en但我无法检索Senior Talent Manager

这是添加HTML代码的工作:

<div class="list_a_wrapper">
<div class="list_cell">
<h3 class="list_h3" lang="en">Senior Talent Manager</h3>
<span class="heading_secondary">
<span class="dib mt5">UAB „Omnisend“</span></span>
</div>
<div class="list_cell jobadlist_list_cell_salary">
<span class="salary_c">
<span class="salary_bl salary_bl_gross">
<span class="salary_inner">
<span class="salary_text">
<span class="salary_amount">2300-3300</span>
<span class="salary_period">€/mėn.</span>
</span>
<span class="salary_calculation">Neatskaičius mokesčių</span>
</span>
</span>
<div class="salary_calculate_bl js_salary_calculate_a" data-href="https://www.cvbankas.lt/perskaiciuoti-skelbimo-atlyginima-6732785">
<div class="button_action">Skaičiuoti »</div>
<div class="salary_calculate_text">Į rankas per mėn.</div>
</div>
</span> </div>
<div class="list_cell list_ads_c_last">
<span class="txt_list_1" lang="lt"><span class="list_city">Vilniuje</span></span>
<span class="txt_list_2">prieš 4 d.</span>
</div>
</div>

因此,最好采用哪种方法:标题位于h3,dib mt5,salary_amount,salary_calculation,list_city中。

安德烈·凯斯利(Andrej Kesely):

该脚本将从以下页面获取职位,公司,薪水,位置:

import requests
from bs4 import BeautifulSoup


url = 'https://www.cvbankas.lt/?miestas=Vilnius&padalinys%5B0%5D=76&page=1'
soup = BeautifulSoup(requests.get(url).content, 'html.parser')

for h3 in soup.select('h3.list_h3'):
    job_title = h3.get_text(strip=True)
    company = h3.find_next(class_="heading_secondary").get_text(strip=True)
    salary = h3.find_next(class_="salary_amount").get_text(strip=True)
    location = h3.find_next(class_="list_city").get_text(strip=True)
    print('{:<50} {:<15} {:<15} {}'.format(company, salary, location, job_title))

印刷品:

UAB „Omnisend“                                     2300-3300       Vilniuje        Senior Talent Manager
UAB „BALTIC VIRTUAL ASSISTANTS“                    Nuo 2700        Vilniuje        SENIOR .NET C# DEVELOPER
UAB „Lexita“                                       1200-2500       Vilniuje        IT PROJEKTŲ VADOVAS (-Ė)
UAB „Nordcode technology“                          1200-2000       Vilniuje        PHP developer (mid-level)
UAB „Nordcurrent Group“                            Nuo 2300        Vilniuje        SENIOR VAIZDO ŽAIDIMŲ TESTUOTOJAS
UAB „Inlusion Netforms“                            1500-3500       Vilniuje        Senior C++ Programmer to work with Unreal (UE4) game engine
UAB „Solitera“                                     1200-2800       Vilniuje        Java(Spring Boot) Developer
UAB „Metso Lithuania“                              Nuo 1300        Vilniuje        BI DATA ANALYST
UAB „Atticae“                                      1000-1500       Vilniuje        PHP programuotojas (-a)
UAB „EIS Group Lietuva“                            2000-7000       Vilniuje        SYSTEM ARCHITECT
UAB GF Bankas                                      Nuo 1200        Vilniuje        HelpDesk specialistas (-ė)
Tesonet                                            1000-3000       Vilniuje        Swift Developer (Security Product)
UAB „Mark ID“                                      1000-3000       Vilniuje        Full Stack programuotojas

...and so on.

编辑:要另存为csv,可以使用此脚本:

import requests
import pandas as pd
from bs4 import BeautifulSoup


all_data = []
for page in range(1, 9):
    url = 'https://www.cvbankas.lt/?padalinys%5B0%5D=76&page=' + str(page)
    soup = BeautifulSoup(requests.get(url).content, 'html.parser')

    for h3 in soup.select('h3.list_h3'):
        job_title = h3.get_text(strip=True)
        company = h3.find_next(class_="heading_secondary").get_text(strip=True)
        salary = h3.find_next(class_="salary_amount")
        salary = salary.get_text(strip=True) if salary else '-'
        location = h3.find_next(class_="list_city").get_text(strip=True)
        print('{:<50} {:<15} {:<15} {}'.format(company, salary, location, job_title))

        all_data.append({
            'Job Title': job_title,
            'Company': company,
            'Salary': salary,
            'Location': location
        })

df = pd.DataFrame(all_data)
df.to_csv('data.csv')

保存data.csv(来自LibreOffice的屏幕截图):

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用python和Beautifulsoup4从抓取数据中写入和保存CSV文件

如何使用python和beautifulsoup4循环抓取网站中多个页面的数据

BeautifulSoup4无法从表中抓取数据

BeautifulSoup4:仅获取3行数据,而不是12行

BeautifulSoup4无法从此表中抓取数据

无法使用BeautifulSoup4抓取网站

从抓取的数据中分割html(Python + BeautifulSoup4)

如何使用pd.DataFrame方法从使用beautifulsoup4抓取的信息中手动创建数据框

如何使用BeautifulSoup4使用Python修复Web抓取中的错误

无法使用BeautifulSoup4(初学者)抓取正确的Wikitable

如何使用BeautifulSoup4从客户标签中抓取信息

使用BeautifulSoup4进行网页爬取

使用python + beautifulSoup4从动态图中抓取数据

循环不适用于使用python和beautifulsoup4抓取数据

使用BeautifulSoup4在Python中存储标签中的数据

使用BeautifulSoup4解析数据

使用PHP进行数据抓取

使用python webdriver进行数据抓取

使用beautifulsoup4后如何分离抓取结果?

如何使用beautifulsoup4用我的python脚本抓取更多亚马逊产品?

使用 BeautifulSoup 从网站抓取数据的问题

在python 3.6中使用beautifulsoup4抓取网站以获取产品信息时

使用 BeautifulSoup 抓取数据

使用beautifulsoup4从网站提取数据并解析成csv

使用 beautifulsoup 进行网页抓取的问题

使用 BeautifulSoup 抓取问题

如何使用 Beautifulsoup4

使用 Python 抓取 HTML 中的特定元素:BeautifulSoup4

使用 Python 和 BeautifulSoup 进行问题抓取