我正在编码一个星期,现在感到迷失了,我试图从多个列表中逃脱到一个列表中,然后添加到CSV中。该程序正在对该网站进行抓取。第1部分创建链接并获取重定向链接,然后在第2部分中连接到站点并获取表。第3部分从HEADERS中提取单词(大约43个单词),并在所有单词的描述中查找,然后在单词左侧添加60个字符,在右侧添加60个字符。之所以处于循环中,是因为我需要从中获取大量房地产报价。希望你能理解。编码需要很多精力!
您可以在此处找到整个程序(编辑部分):https://stackoverflow.com/posts/comments/90155616?noredirect=1
代码如下:
for p in page_soup.select('section#description'):
p = str(p)
p = p.lower()
lista_k = []
for j in range(len(HEADERS3)):
#print('j:',j)
# find_p znajduje wszystkie słowa kluczowe z HEADERS3 w paragrafie na stronie kontraktu.
find_p = re.findall(HEADERS3[j],p)
# listy, które wyświetlają pozycję startową poszczególnych słów muszą zaczynać się od '-' lub 0?,
# ponieważ, gdy dane słowo nie zostanie odnalezione to listy będą puste w pierwszej iteracji pętli
# co w konsekewncji doprowadzi do błędu out of range
m_start = []
m_end = []
lista_j = []
for m in re.finditer(HEADERS3[j], p):
#print((m.start(),m.end()), m.group())
m_start.append(m.start())
m_end.append(m.end())
#print(h)
for k in range(len(m_start)):
#właściwe teraz nie wiem po co to jest..
try:
x = m_start[k]
y = m_end[k]
except IndexError:
x = m_start[0]
y = m_end[0]
#print('xy:',x,y)
#print(find_p)
#print(HEADERS3[j])
z = (HEADERS3[j]+':',p[-60+x:y+60]+' ++-NNN-++')
lista_j.append(z)
#print(z)
#print ('lista_j:',lista_j)
lista_k.append(lista_j)
print('lista_k:',lista_k)
输出为:
----------- 3 -----------
http://www.kontrakt.szczecin.pl/mieszkanie-wynajem-46m2-2000pln-gorna-bezrzecze-szczecin-zachodniopomorskie,351353
['351353', '2', '2 000 PLN', '-', '46\xa0m2', '0', '2', 'Widna', '-', '-', 'Gazowe', 'Tak', 'Tak', 'Piec gazowy', '-', 'Cegła', '2007', 'Bardzo dobry', '-', '-', '-', 'Liczba tarasów: 2', '-', 'Ogród: Tak', '-', 'Garaż: Tak', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-']
lista_j: []
lista_j: []
lista_j: []
lista_j: [('gospodarcze:', 'arkingowe na samochód ,rower ale również jako pomieszczenie gospodarcze z półkami. cena najmu do negocjacji,warunkiem jednak koniec ++-NBP-++')]
lista_j: []
lista_j: [('parking:', 'ie do garażu.przed garażem podjazd i ogólnodostępne miejsca parkingowe . w pobliżu wiele sklepów,między innymi dwa supermarkety ++-NBP-++'), ('parking:', 'z śmieci i f. remontowy.garaż do wykorzystania jako miejsce parkingowe na samochód ,rower ale również jako pomieszczenie gospod ++-NBP-++')]
lista_j: []
lista_j: [('garaż:', 'nie dwupokojowe usytuowane na parterze z tarasem ,ogrodem i garażem.budynek wybudowany w 2007r. na nowym kameralnym,bezpieczn ++-NBP-++'), ('garaż:', 'ience piec dwuobiegowy typu vaillant .z ogrodu przejście do garażu.przed garażem podjazd i ogólnodostępne miejsca parkingowe ++-NBP-++'), ('garaż:', 'uobiegowy typu vaillant .z ogrodu przejście do garażu.przed garażem podjazd i ogólnodostępne miejsca parkingowe . w pobliżu w ++-NBP-++'), ('garaż:', ' 220zł w nim zaliczka na wodę , wywóz śmieci i f. remontowy.garaż do wykorzystania jako miejsce parkingowe na samochód ,rower ++-NBP-++')]
lista_j: [('ogród:', 'in.salon z aneksem kuchennym ok 24mkw z wyjściem na taras i ogród.taras w częsci zadaszony z kącikiem z siedziskiem oraz ozdo ++-NBP-++'), ('ogród:', 'kiem z siedziskiem oraz ozdobną pergolą w części otwarty na ogród z zadbanym trawnikiem oraz krzewami :porzeczką,borówką i ma ++-NBP-++')]
lista_j: [('ogrod:', 'ne mieszkanie dwupokojowe usytuowane na parterze z tarasem ,ogrodem i garażem.budynek wybudowany w 2007r. na nowym kameralnym ++-NBP-++'), ('ogrod:', 'umywalką i wc. w łazience piec dwuobiegowy typu vaillant .z ogrodu przejście do garażu.przed garażem podjazd i ogólnodostępne ++-NBP-++')]
lista_j: []
lista_j: []
lista_j: []
lista_j: []
lista_j: []
lista_j: []
lista_j: [('remon:', 'o zarządcy 220zł w nim zaliczka na wodę , wywóz śmieci i f. remontowy.garaż do wykorzystania jako miejsce parkingowe na samoc ++-NBP-++')]
lista_j: []
lista_j: []
lista_j: []
lista_j: []
lista_j: []
lista_j: []
lista_j: []
lista_j: []
lista_j: []
lista_j: []
lista_j: []
lista_j: []
lista_j: [('aneks:', 'miejskiej-szybki dojazd do centrum miasta ok.10 min.salon z aneksem kuchennym ok 24mkw z wyjściem na taras i ogród.taras w cz ++-NBP-++'), ('aneks:', 'anym trawnikiem oraz krzewami :porzeczką,borówką i maliną.w aneksie kuchennym meble w zabudowie a w wyposażeniu: kuchenka gaz ++-NBP-++')]
lista_j: []
lista_j: []
lista_j: []
lista_j: []
lista_j: []
lista_j: [('zabudow:', 'ami :porzeczką,borówką i maliną.w aneksie kuchennym meble w zabudowie a w wyposażeniu: kuchenka gazowa amica,z piekarnikiem ele ++-NBP-++'), ('zabudow:', ' przeszklona ława.w drugim pokoju sypialni ok.15mkw:szafa w zabudowie typu komandor oraz duże łóżko i dwie szafki nocne.łazienk ++-NBP-++')]
lista_j: []
lista_j: []
lista_j: []
lista_j: []
lista_j: []
lista_j: []
lista_j: []
lista_j: []
lista_k: [[], [], [], [('gospodarcze:', 'arkingowe na samochód ,rower ale również jako pomieszczenie gospodarcze z półkami. cena najmu do negocjacji,warunkiem jednak koniec ++-NBP-++')], [], [('parking:', 'ie do garażu.przed garażem podjazd i ogólnodostępne miejsca parkingowe . w pobliżu wiele sklepów,między innymi dwa supermarkety ++-NBP-++'), ('parking:', 'z śmieci i f. remontowy.garaż do wykorzystania jako miejsce parkingowe na samochód ,rower ale również jako pomieszczenie gospod ++-NBP-++')], [], [('garaż:', 'nie dwupokojowe usytuowane na parterze z tarasem ,ogrodem i garażem.budynek wybudowany w 2007r. na nowym kameralnym,bezpieczn ++-NBP-++'), ('garaż:', 'ience piec dwuobiegowy typu vaillant .z ogrodu przejście do garażu.przed garażem podjazd i ogólnodostępne miejsca parkingowe ++-NBP-++'), ('garaż:', 'uobiegowy typu vaillant .z ogrodu przejście do garażu.przed garażem podjazd i ogólnodostępne miejsca parkingowe . w pobliżu w ++-NBP-++'), ('garaż:', ' 220zł w nim zaliczka na wodę , wywóz śmieci i f. remontowy.garaż do wykorzystania jako miejsce parkingowe na samochód ,rower ++-NBP-++')], [('ogród:', 'in.salon z aneksem kuchennym ok 24mkw z wyjściem na taras i ogród.taras w częsci zadaszony z kącikiem z siedziskiem oraz ozdo ++-NBP-++'), ('ogród:', 'kiem z siedziskiem oraz ozdobną pergolą w części otwarty na ogród z zadbanym trawnikiem oraz krzewami :porzeczką,borówką i ma ++-NBP-++')], [('ogrod:', 'ne mieszkanie dwupokojowe usytuowane na parterze z tarasem ,ogrodem i garażem.budynek wybudowany w 2007r. na nowym kameralnym ++-NBP-++'), ('ogrod:', 'umywalką i wc. w łazience piec dwuobiegowy typu vaillant .z ogrodu przejście do garażu.przed garażem podjazd i ogólnodostępne ++-NBP-++')], [], [], [], [], [], [], [('remon:', 'o zarządcy 220zł w nim zaliczka na wodę , wywóz śmieci i f. remontowy.garaż do wykorzystania jako miejsce parkingowe na samoc ++-NBP-++')], [], [], [], [], [], [], [], [], [], [], [], [], [('aneks:', 'miejskiej-szybki dojazd do centrum miasta ok.10 min.salon z aneksem kuchennym ok 24mkw z wyjściem na taras i ogród.taras w cz ++-NBP-++'), ('aneks:', 'anym trawnikiem oraz krzewami :porzeczką,borówką i maliną.w aneksie kuchennym meble w zabudowie a w wyposażeniu: kuchenka gaz ++-NBP-++')], [], [], [], [], [], [('zabudow:', 'ami :porzeczką,borówką i maliną.w aneksie kuchennym meble w zabudowie a w wyposażeniu: kuchenka gazowa amica,z piekarnikiem ele ++-NBP-++'), ('zabudow:', ' przeszklona ława.w drugim pokoju sypialni ok.15mkw:szafa w zabudowie typu komandor oraz duże łóżko i dwie szafki nocne.łazienk ++-NBP-++')], [], [], [], [], [], [], [], []]
[]
答案 0 :(得分:0)
问题在于,在循环的每次迭代过程中,您一次又一次地初始化lista_j
。您需要将其移出循环。
未经测试,但应该可以工作:
for p in page_soup.select('section#description'):
p = str(p)
p = p.lower()
lista_k = []
lista_j = []
for j in range(len(HEADERS3)):
#print('j:',j)
# find_p znajduje wszystkie słowa kluczowe z HEADERS3 w paragrafie na stronie kontraktu.
find_p = re.findall(HEADERS3[j],p)
# listy, które wyświetlają pozycję startową poszczególnych słów muszą zaczynać się od '-' lub 0?,
# ponieważ, gdy dane słowo nie zostanie odnalezione to listy będą puste w pierwszej iteracji pętli
# co w konsekewncji doprowadzi do błędu out of range
m_start = []
m_end = []
for m in re.finditer(HEADERS3[j], p):
#print((m.start(),m.end()), m.group())
m_start.append(m.start())
m_end.append(m.end())
#print(h)
for k in range(len(m_start)):
#właściwe teraz nie wiem po co to jest..
try:
x = m_start[k]
y = m_end[k]
except IndexError:
x = m_start[0]
y = m_end[0]
#print('xy:',x,y)
#print(find_p)
#print(HEADERS3[j])
z = (HEADERS3[j]+':',p[-60+x:y+60]+' ++-NNN-++')
lista_j.append(z)
#print(z)
#print ('lista_j:',lista_j)
lista_k.append(lista_j)
print('lista_k:',lista_k)
或者甚至在第一个for
循环之外,具体取决于您的情况:
lista_k = []
lista_j = []
for p in page_soup.select('section#description'):
p = str(p)
p = p.lower()
for j in range(len(HEADERS3)):
#print('j:',j)
# find_p znajduje wszystkie słowa kluczowe z HEADERS3 w paragrafie na stronie kontraktu.
find_p = re.findall(HEADERS3[j],p)
# listy, które wyświetlają pozycję startową poszczególnych słów muszą zaczynać się od '-' lub 0?,
# ponieważ, gdy dane słowo nie zostanie odnalezione to listy będą puste w pierwszej iteracji pętli
# co w konsekewncji doprowadzi do błędu out of range
m_start = []
m_end = []
for m in re.finditer(HEADERS3[j], p):
#print((m.start(),m.end()), m.group())
m_start.append(m.start())
m_end.append(m.end())
#print(h)
for k in range(len(m_start)):
#właściwe teraz nie wiem po co to jest..
try:
x = m_start[k]
y = m_end[k]
except IndexError:
x = m_start[0]
y = m_end[0]
#print('xy:',x,y)
#print(find_p)
#print(HEADERS3[j])
z = (HEADERS3[j]+':',p[-60+x:y+60]+' ++-NNN-++')
lista_j.append(z)
#print(z)
#print ('lista_j:',lista_j)
lista_k.append(lista_j)
print('lista_k:',lista_k)