循环页面以便使用BeautifulSoup进行抓取

埃德加·范宁(Edgar Vanin):

我的单页刮板:

import requests
import pandas as pd
from bs4 import BeautifulSoup

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

all_data = []
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))

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

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

#tips = sns.load_dataset('data.csv')
#print(tips)

给我一个csv文件,但只有50行。我想抓取所有页面,本来想在HTML代码中查找,'class=':'prev_next'但是BACK和FORWARD相同,只是href不同。因此,我决定进行范围循环并更改页面:

import requests
import pandas as pd
from bs4 import BeautifulSoup

#url = 'https://www.cvbankas.lt/?padalinys%5B0%5D=76&page=1'
#soup = BeautifulSoup(requests.get(url).content, 'html.parser')
all_data = []
for i in range(1, 9):
    url = 'https://www.cvbankas.lt/?padalinys%5B0%5D=76&page='+str(i)
    print(url)
    soup = BeautifulSoup(requests.get(url).content, 'html.parser')
    for h3 in soup.select('h3.list_h3'):
        try:
            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))
        except AttributeError:
            
            all_data.append({
                    'Job Title': job_title,
                    'Company': company,
                    'Salary': salary,
                    'Location': location
                })
        
df = pd.DataFrame(all_data)
df.to_csv('data.csv')

运行代码后,它仅保存5行,因此比我仅刮取一页的代码少10倍。

您将如何循环页面?页面从18

还有如何清理薪水对象?因为它是字符串,其中包含Nuo 2700Iki 2500或具有两个数字,例如1000-3000因为我想使用Salary列作为整数,所以我可以对Seaborn进行一些绘图。

赏金:

您已将添加缩进到all_data内的列表中except因此,except仅在出现异常时控件才进入运行以下脚本可在csv文件中提供约365行

import requests
import pandas as pd
from bs4 import BeautifulSoup

#url = 'https://www.cvbankas.lt/?padalinys%5B0%5D=76&page=1'
#soup = BeautifulSoup(requests.get(url).content, 'html.parser')
all_data = []
for i in range(1, 9):
    url = 'https://www.cvbankas.lt/?padalinys%5B0%5D=76&page='+str(i)
    print(url)
    soup = BeautifulSoup(requests.get(url).content, 'html.parser')
    for h3 in soup.select('h3.list_h3'):
        try:
            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))
            all_data.append({
                    'Job Title': job_title,
                    'Company': company,
                    'Salary': salary,
                    'Location': location
                })
        except AttributeError:
            pass
            
        
df = pd.DataFrame(all_data)
df.to_csv('data.csv')

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用BeautifulSoup网站抓取IMDb页面

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

如何使用BeautifulSoup和Python抓取页面?

使用BeautifulSoup进行网页抓取时出错

如何使用BeautifulSoup从页面抓取

Web使用BeautifulSoup抓取多个页面

在Wikipedia上使用BeautifulSoup进行Web抓取

使用python和BeautifulSoup进行网络抓取

使用Python,BeautifulSoup进行Web抓取

如何使用BeautifulSoup创建循环以从源URL抓取多个页面?

使用BeautifulSoup到Dataframe进行Web抓取

使用BeautifulSoup进行Python网络抓取,循环并跳过某些URL值

使用 BeautifulSoup FindAll 进行网页抓取

如何使用 BeautifulSoup 进行网页抓取

使用 BeautifulSoup 进行网页抓取 -- Python

使用 Python BeautifulSoup 进行网页抓取

Python - 使用 BeautifulSoup 和 Urllib 进行抓取

使用 BeautifulSoup 进行网页抓取时如何移动到新页面?

使用 BeautifulSoup 在 python 中抓取多个页面

使用 BeautifulSoup 从抓取的页面中提取文本

使用beautifulsoup抓取动态加载页面

当数据在页面之间拆分时使用beautifulsoup进行抓取

使用 BeautifulSoup 抓取:从 HTML 页面抓取表格中的特定列

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

使用 beautifulsoup 循环页面

使用 BeautifulSoup 和 json 进行网页抓取

使用请求和 BeautifulSoup 登录以抓取页面

使用 BeautifulSoup 在 Steam 中抓取多个页面

使用 Python 和 BeautifulSoup 进行问题抓取