簡體   English   中英

Python 代碼在 csv 文件中僅打印一行

[英]Python code printing only one row in csv file

最近我嘗試編寫一個 yp.com 列表刮板。 但無法弄清楚為什么代碼在.csv 文件中只打印一行。

yp_urls.txt網址是:

https://www.yellowpages.com/search-map?search_terms=restaurant&geo_location_terms=波士頓https://www.yellowpages.com/search-map?search_terms=restaurant&page=2=Boston

這是代碼:

from urllib.request import urlopen
from bs4 import BeautifulSoup as soup
with open('yp_urls.txt', 'r') as f:
    for url in f:
        print(url)        
        uClient = urlopen(url)
        page_html = uClient.read()        
        uClient.close()
        page_soup = soup(page_html, "html.parser")
        containers = page_soup.findAll("div",{"class":"v-card"})
        #container= containers[0]
        out_filename = "yp_listing.csv"
        headers = "URL \n"
        f = open(out_filename, "w")
f.write(headers)
for container in containers:
            business = container.a["href"].title()
print("business:" + business + "\n" )
f.write(business + "," + "\n")
f.close()  # Close the file

問題:

  1. if 塊的代碼沒有正確縮進。

  2. 在 for 循環外打開 output 文件句柄。

嘗試:

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

out_filename = "yp_listing.csv"
with open('yp_urls.txt', 'r') as f, open(out_filename, "w") as fout:
    headers = "URL \n"
    fout.write(headers)

    for url in f:
        print(url)        
        uClient = urlopen(url)
        page_html = uClient.read()        
        uClient.close()
        page_soup = soup(page_html, "html.parser")
        containers = page_soup.findAll("div",{"class":"v-card"})
        #container= containers[0]
        for container in containers:
            business = container.a["href"].title()
            print("business:" + business + "\n" )
            fout.write(business + "," + "\n")
#f.close()  # Close the file (closed by with)

f.write 命令似乎在您的循環之外,因此只有在循環完成后才會被命中。

例如,代碼循環通過 url,然后退出循環並執行 f.write(headers),然后循環通過容器,退出該循環和 f.write(business:..)

您可能還希望檢查 output 文件是否在右側 state 中以“w”(寫入/覆蓋)與“a”(附加)打開。 也許還可以考慮更改手柄,因此兩者都不是“f”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM