如何用逗号分隔结果 Python 网页抓取数据



我正在尝试从不同的站点提取数据和信息。我处理了一个脚本,它运行良好,但是,当我尝试打印结果时,会出现一些问题,例如结果就像句子一样,没有逗号没有分隔符。我没有尝试过自己,什么都没有。

这是我正在研究的网站 http://www.conditions-de-banque-tunisie.com/banques-en-tunisie.html

我试图在结果和什么都没有之间加一个逗号。逗号在末尾,仅此而已。

linksname.find_all('p')[i].text + ','
import requests
import bs4
import csv
import io
response = requests.get('http://www.conditions-de-banque-tunisie.com/banques-en-tunisie.html')
response.status_code
soup_obj = bs4.BeautifulSoup(response.text, "html.parser")
soup_obj.prettify()

#print('shhh') 
linksname = soup_obj.find(class_='bloc-banques-liste')
#linksname.text
textContent = []
for i in range(0,1): links =   linksname.find_all('p')[i].text
textContent.append(links)  
for text in textContent: 
print('----------------------------')
print(text)
with io.open("fname.txt", "w", encoding="utf-8") as f: f.write(text)

这是结果:

北非国际银行地址 : 海雷丁帕查大道 恩纳西姆蒙普莱西尔 1002 突尼斯 : +216 71 950 800传真 : +216 71 950 840网站 网站 : http://www.naibbank.com/

卡塔尔国家银行地址 : 科学城街 - B.P. 320 - 1080 突尼斯 CedexTé : +216 71 750 000传真 : +216 71 235 611网站 : http://www.qnb.com.tn/

我希望结果会像:

北非国际银行 , 地址 : Avenue Kheireddine Pacha Ennassim Montplaisir 1002 , TUNISTé : +216 71 950 800 , 传真 : +216 71 950 840 ,网站网站 : http://www.naibbank.com/

或者最好的结果是:

北非国际银行 , 地点 Kheireddine Pacha Ennassim Montplaisir 1002 , +216 71 950 800 , +216 71 950 840 , : http://www.naibbank.com/

检查下面的代码,让我知道是否有帮助。

import requests
import bs4
import csv
import io
response = requests.get('http://www.conditions-de-banque-tunisie.com/banques-en-tunisie.html')
response.status_code
soup_obj = bs4.BeautifulSoup(response.text, "html.parser")
soup_obj.prettify()

#print('shhh') 
linksname = soup_obj.find(class_='bloc-banques-liste')
textContent = []
links = linksname.findChildren("div", class_='banques-liste-desc', recursive=True)
links = [" n ".join([y.text for y in link.findChildren("p")]) for link in links]
print(str(links))

下面是代码的简化版本,但在将其适合您自己的样式后,它应该可以让您到达需要的位置:

from bs4 import BeautifulSoup as bs
import requests
response = requests.get('http://www.conditions-de-banque-tunisie.com/banques-en-tunisie.html')
soup = bs(response.text, "html.parser")
textContent = []
linksname = soup.find(class_='bloc-banques-liste')
for name in linksname:
entry =   linksname.find_all('p')[0].text
textContent.append(entry) 
break
for bank in textContent:
print(bank.replace(' :',',').strip())

输出:

Al BarakaAdresse, 88, Avenue Hedi Chaker 1002 TunisTé, +216 71 790 000Fax, +21671 780 235Email, contact@albarakabank.com.tnSite web,  http://www.albarakabank.com.tn/ 

Amen BankAdresse, Avenue Mohamed V 1002 Tunis - TunisieTé, (+216) 71 148 000Fax, (+216) 71 833 517Site web,  http://www.amenbank.com.tn/ 

等。

而不是使用"bloc-banques-liste"类来查找对象,你可以使用"banques-liste-desc">
这将直接给你所有块的列表。
检查以下代码。

import requests
import bs4
import csv
import io
response = requests.get('http://www.conditions-de-banque-tunisie.com/banques- 
en-tunisie.html')
response.status_code
soup_obj = bs4.BeautifulSoup(response.text, "html.parser")
soup_obj.prettify()
linksname = soup_obj.find_all(class_='banques-liste-desc')
for i in range(0, len(linksname)):
name = linksname[i].find('h1').find('a').text
print(name)
address = linksname[i].find_all('p')
for j in range(0, len(address)):
print(address[j].text)
print("----------------------------")

在这里,我分别打印了所有值,而不是您可以使用逗号直接连接它们。

最新更新