我是Python和刮刮手的新手。我试图运行两个循环。一个人去,从一页抓住id。然后,使用这些ID,我调用另一个API来获取更多信息/属性。
但是当我运行这个程序时,它只运行第一位(获取ID),但随后关闭并且不运行第二部分。我觉得我在这里遗漏了一些关于Python控制流程的基本内容。当我在终端中运行它时,为什么Python在第一个循环后关闭?
import requests
import csv
import time
import json
from bs4 import BeautifulSoup, Tag
file = open('parcelids.csv','w')
writer = csv.writer(file)
writer.writerow(['parcelId'])
for x in range(1,10):
time.sleep(1) # slowing it down
url = 'http://apixyz/Parcel.aspx?Pid=' + str(x)
source = requests.get(url)
response = source.content
soup = BeautifulSoup(response, 'html.parser')
parcelId = soup.find("span", id="MainContent_lblMblu").text.strip()
writer.writerow([parcelId])
out = open('mapdata.csv','w')
with open('parcelIds.csv', 'r') as in1:
reader = csv.reader(in1)
writer = csv.writer(out)
next(reader, None) # skip header
for row in reader:
row = ''.join(row[0].split())[:-2].upper().replace('/','-') #formatting
url="https://api.io/api/properties/"
url1=url+row
time.sleep(1) # slowing it down
response = requests.get(url1)
resp_json_payload = response.json()
address = resp_json_payload['property']['address']
writer.writerow([address])
答案 0 :(得分:2)
如果您在Windows中运行(文件名不区分大小写),那么当您重新打开它以便从中读取时,您打开以进行写入的文件(parcelids.csv)仍处于打开状态。
尝试关闭文件,然后再打开文件进行阅读。