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

伊斯蒂亚·阿夫里迪

当前的脚本只允许我抓取一个页面,但是我想从源URL中删除所有5个页面。如何在剩余的4页中循环/迭代?

#Import Libraries
from bs4 import BeautifulSoup
import requests
import csv
source = requests.get('https://www.sustainalytics.com/esg-ratings/?industry=Aerospace%20&%20Defense&currentpage=1').text
soup = BeautifulSoup(source, 'lxml')

#Start CSV
csv_file = open('aerospacedata_1.csv', 'w')
csv_writer = csv.writer(csv_file)
csv_writer.writerow(['company_name', 'company_exchange', 'company_risk'])

#Scrap Data from Web and write to csv
for company_info in soup.find_all(class_='company-row d-flex'):
    company_name = company_info.a.text
    company_exchange = company_info.find("small").text
    company_risk = company_info.find("div", class_="col-2").text
    print(company_name, company_exchange,company_risk)
    csv_writer.writerow([company_name, company_exchange, company_risk])
csv_file.close()

输出:

company_name company_exchange company_risk

AECC航空动力有限公司SHG:600893 53.3

空中客车SE BY:AIR 30.3

Aselsan Elektronik Sanayi ve Ticaret AS IST:ASELS 31.6

中航飞机股份有限公司SHE:000768 54.4

中航工业沉阳飞机有限公司SHG:600760 51.3

中国航空工业科技有限公司HKG:2357 45.2

BAE系统PLC LON:BA 34.3

庞巴迪公司TSE:BBD.B 30

BWX Technologies,Inc. NYS:BWXT 42.3

CAE Inc. TSE:CAE 32.4

赏金

放入一个for循环并使用循环不变式来构造url和文件名

#Import Libraries
from bs4 import BeautifulSoup
import requests
import csv

pages = 5
for i in range(1, pages+1):
    print(f"Page - {i}")
    source = requests.get(f'https://www.sustainalytics.com/esg-ratings/?industry=Aerospace%20&%20Defense&currentpage={i}').text
    soup = BeautifulSoup(source, 'lxml')

    #Start CSV
    csv_file = open(f'aerospacedata_{i}.csv', 'w')
    csv_writer = csv.writer(csv_file)
    csv_writer.writerow(['company_name', 'company_exchange', 'company_risk'])

    #Scrap Data from Web and write to csv
    for company_info in soup.find_all(class_='company-row d-flex'):
        company_name = company_info.a.text
        company_exchange = company_info.find("small").text
        company_risk = company_info.find("div", class_="col-2").text
        print(company_name, company_exchange,company_risk)
        csv_writer.writerow([company_name, company_exchange, company_risk])
    csv_file.close()

    print("---" * 30)

输出:

Page - 1
AECC Aviation Power Co Ltd SHG:600893 53.3
Airbus SE PAR:AIR 30.3
Aselsan Elektronik Sanayi ve Ticaret AS IST:ASELS 31.6
AVIC Aircraft Co., Ltd. SHE:000768 54.4
AVIC Shenyang Aircraft Co. Ltd. SHG:600760 51.3
AviChina Industry & Technology Company Limited HKG:2357 45.2
BAE Systems PLC LON:BA 34.3
Bombardier Inc. TSE:BBD.B 30
BWX Technologies, Inc. NYS:BWXT 42.3
CAE Inc. TSE:CAE 32.4
------------------------------------------------------------------------------------------
Page - 2
China Avionics Systems Co.,Ltd. SHG:600372 54.8
Cobham PLC LON:COB 34.7
Curtiss-Wright Corp NYS:CW 39
Dassault Aviation S.A. PAR:AM 31.8
Embraer S.A. BSP:EMBR3 36.3
FACC AG WBO:FACC 37.9
General Dynamics Corp NYS:GD 37.5
Heico Corp NYS:HEI 39.3
Hexcel Corp NYS:HXL 31.6
Huntington Ingalls Industries, Inc. NYS:HII 41.3
------------------------------------------------------------------------------------------
Page - 3
Kongsberg Gruppen ASA OSL:KOG 29
Korea Aerospace Industries, Ltd. KRX:047810 49.9
L3Harris Technologies, Inc. NYS:LHX 38.8
Leonardo S.p.a. MIL:LDO 28.7
Lockheed Martin Corp NYS:LMT 30.6
Macquarie Infrastructure Corp NYS:MIC 44.7
Meggitt PLC LON:MGGT 32.7
MTU Aero Engines AG ETR:MTX 23.8
Northrop Grumman Corp. NYS:NOC 31.1
QinetiQ Group PLC LON:QQ 23
------------------------------------------------------------------------------------------
Page - 4
Raytheon Co NYS:RTN 32.9
Rheinmetall AG ETR:RHM 35.4
Rolls-Royce Holdings PLC LON:RR 28.6
Saab AB OME:SAAB.B 31.5
Safran SA PAR:SAF 30.7
Senior PLC LON:SNR 31.9
Signature Aviation Plc LON:SIG 35.4
Singapore Technologies Engineering Ltd. SES:S63 29.2
Spirit AeroSystems Holdings Inc NYS:SPR 36.8
Teledyne Technologies, Inc. NYS:TDY 37.5
------------------------------------------------------------------------------------------
Page - 5
Textron Inc. NYS:TXT 37.8
Thales SA PAR:HO 28.6
The Boeing Company NYS:BA 39
TransDigm Group Inc NYS:TDG 40.9
Ultra Electronics Holdings PLC LON:ULE 37.4
United Technologies Corp NYS:UTX 29.3
------------------------------------------------------------------------------------------

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

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

如何使用Python和BeautifulSoup抓取多个Google页面

如何使用BeautifulSoup从页面抓取

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

如何使用BeautifulSoup抓取页面?页面源不匹配检查元素

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

Web使用BeautifulSoup抓取多个页面

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

如何在URL中使用页码抓取多个页面

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

BeautifulSoup Web抓取多个页面的URL不变

BeautifulSoup 无法抓取多个页面

使用URL中的变量循环抓取网站中多个页面的数据

Python-使用BeautifulSoup在页面内抓取多个类

使用 BeautifulSoup 和 Python 抓取多个表格页面

使用 BeautifulSoup 从多个页面下载多线程文件的网页抓取

如何使用 CrawlSpider 抓取多个 json 页面?

BeautifulSoup使用JSON循环从多个div抓取信息

使用 BeautifulSoup 抓取 url

使用多个 start_url 抓取多个页面

如何通过使用rvest动态更新url从多个页面抓取数据

如何使用python BeautifulSoup通过分页抓取页面

如何在一个Web上从多个页面抓取数据,我正在使用Python和BeautifulSoup

如何使用BeautifulSoup循环链接并抓取新闻文章的内容

当 url 未定义页码时,如何抓取多个页面?

使用 beautifulsoup 循环页面

如何在 selenium python BeautifulSoup 上循环多个页面

如何从已抓取的 url BeautifulSoup 的多个子链接中抓取信息?

如何使用循环抓取页面的所有项目