【问题标题】:How to separate the result Python web scraping data with a comma如何用逗号分隔结果 Python Web 抓取数据
【发布时间】:2019-07-27 12:02:45
【问题描述】:

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

这是我正在开发的网站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)

这是结果:

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

Qatar National BankAdresse : Rue de la cité des Sciences - B.P. 320 - 1080 Tunis CedexTé:+216 71 750 000传真:+216 71 235 611网站:http://www.qnb.com.tn/

我希望结果会是这样的:

北非国际银行,地址:Avenue Kheireddine Pacha Ennassim Montplaisir 1002,突尼斯:+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/

【问题讨论】:

  • 此时您应该接受以下答案之一。

标签: python web-scraping


【解决方案1】:

检查下面的代码,如果有帮助,请告诉我。

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))

【讨论】:

  • 谢谢,但有一点问题,结果很好,但它就像一个大段落,不像块你能更新你的代码吗?因为结果我要把它们放在一个 csv 中结果我做不到
【解决方案2】:

以下是您的代码的稍微简化的版本,但在适合您自己的风格后,它应该可以让您到达您需要的地方:

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/ 

等等

【讨论】:

    【解决方案3】:

    您可以使用“banques-liste-desc”而不是使用“bloc-banques-liste”类来查找对象
    这将直接为您提供所有块的列表。
    检查以下代码。

    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("----------------------------")
    

    这里我已经分别打印了所有的值,而不是你可以使用逗号直接加入它们。

    【讨论】:

      猜你喜欢
      • 2016-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      • 1970-01-01
      • 2021-11-17
      相关资源
      最近更新 更多