我有ngFor迭代对象的数组,而对象又有对象。
import requests
import re
from bs4 import BeautifulSoup
from urllib.parse import unquote
data = {
'__EVENTTARGET': "dnn$ctr410$MemberSearch$btnSearch",
'__EVENTARGUMENT': '',
'__VIEWSTATEENCRYPTED': '',
'dnn$ctlHeader$dnnSearch$Search': 'SiteRadioButton',
'dnn$ctlHeader$dnnSearch$txtSearch': '',
'dnn$ctr410$MemberSearch$txtFirstName': '',
'dnn$ctr410$MemberSearch$txtLastName': '',
'dnn$ctr410$MemberSearch$ddlMemberType': 0,
'dnn$ctr410$MemberSearch$txtMembershipNumber': '',
'dnn$ctr410$MemberSearch$txtCpNumber': '',
'dnn$ctr410$MemberSearch$txtCity': '',
'dnn$ctr410$MemberSearch$txtOrganisation': '',
'dnn$ctr410$MemberSearch$txtAddress2': '',
'dnn$ctr410$MemberSearch$txtAddress3': '',
'dnn$ctr410$MemberSearch$txtEmail': '',
'dnn_ctr410_MemberSearch_grdMembers_ClientState': '',
'ScrollTop': 432,
'__dnnVariable': '{"__scdoff":"1","__dnn_pageload":"__dnn_setScrollTop();"}'
}
def main(url):
with requests.Session() as req:
r = req.get(url)
soup = BeautifulSoup(r.content, 'html.parser')
data['StylesheetManager_TSSM'] = re.search(
r"hf.value \+= '(.*?)\'", r.text).group(1)
data['ScriptManager_TSM'] = unquote(soup.findAll('script', src=True)
[2]['src']).split("=", 3)[-1]
data['__VIEWSTATE'] = soup.find("input", id="__VIEWSTATE").get("value")
data['__VIEWSTATEGENERATOR'] = soup.find(
"input", id="__VIEWSTATEGENERATOR").get("value")
data['__EVENTVALIDATION'] = soup.find(
"input", id="__EVENTVALIDATION").get("value")
for _ in range(5400):
r = req.post(url, data=data)
soup = BeautifulSoup(r.content, 'html.parser')
names = [name.text for name in soup.select("div.name_head")]
spans = [name.text for name in soup.select("td.chart_detail")]
page = soup.select_one(
"a.rgCurrentPage").next_sibling['href'].split("'")[1]
data['__EVENTTARGET'] = page
data['__EVENTVALIDATION'] = soup.find(
"input", id="__EVENTVALIDATION").get("value")
data['__VIEWSTATE'] = soup.find(
"input", id="__VIEWSTATE").get("value")
print(names)
print(spans)
with open('icsi.txt', 'a') as f:
f.write("#####\n")
for item in names:
f.write("%s\n" % item)
f.write("#####")
for item in spans:
f.write("%s" % item)
main("https://www.icsi.in/student/Members/MemberSearch.aspx")
请不要阅读语法,它是在移动设备中键入的。问题是item2为null,并且错误地指出了item2是不确定的。我该怎么做,这只是一个临时代码段,我要显示很多列。是我解决这个问题的方法?
我签出并发现
<div *ngFor="item of items" >
<div>{{item.item1}}</div>
<input name="test" [(ngModel)]="{{item.item2.item2a}}" />
</div>
。但是我想在迭代后修改记录。请提出建议。
答案 0 :(得分:0)
像Phix在评论中所述,您呢?在错误的地方。这应该是您的实际代码:
<input name="test" [(ngModel)]="item?.item2?.item2a" />
您可以修改数据并使用[value]="modifiedData"