Я либо получаю сообщение об ошибке или ничего не разбираемый/записи с помощью следующего кода:Синтаксический HTML и записи в CSV, используя BeautifulSoup - AttributeError или HTML-разбираемый
soup = BeautifulSoup(browser.page_source, 'html.parser')
userinfo = soup.find_all("div", attrs={"class": "fieldWrapper"})
rows = userinfo.find_all(attrs="value")
with open('testfile1.csv', 'w') as outfile:
writer = csv.writer(outfile)
writer.writerow(rows)
строк = userinfo.find_all (ATTRS = «значение»)
AttributeError: объект «Resultset» не имеет атрибута «find_all»
Так что я пытался для цикла с печатью только, чтобы проверить это, но ничего не возвращает в то время как программа работает успешно:
userinfo = soup.find_all("div", attrs={"class": "fieldWrapper"})
for row in userinfo:
rows = row.find_all(attrs="value")
print(rows)
Это html, который я пытаюсь проанализировать. Я пытаюсь вернуть текст из значения атрибутов:
<div class="controlHolder">
<div id="usernameWrapper" class="fieldWrapper">
<span class="styled">Username:</span>
<div class="theField">
<input name="ctl00$cleanMainPlaceHolder$tbUsername" type="text" value="username" maxlength="16" id="ctl00_cleanMainPlaceHolder_tbUsername" disabled="disabled" tabindex="1" class="textbox longTextBox">
<input type="hidden" name="ctl00$cleanMainPlaceHolder$hdnUserName" id="ctl00_cleanMainPlaceHolder_hdnUserName" value="AAubrey">
</div>
</div>
<div id="fullNameWrapper" class="fieldWrapper">
<span class="styled">Full Name:</span>
<div class="theField">
<input name="ctl00$cleanMainPlaceHolder$tbFullName" type="text" value="Full Name" maxlength="50" id="ctl00_cleanMainPlaceHolder_tbFullName" tabindex="2" class="textbox longTextBox">
<input type="hidden" name="ctl00$cleanMainPlaceHolder$hdnFullName" id="ctl00_cleanMainPlaceHolder_hdnFullName" value="Anthony Aubrey">
</div>
</div>
<div id="emailWrapper" class="fieldWrapper">
<span class="styled">Email:</span>
<div class="theField">
<input name="ctl00$cleanMainPlaceHolder$tbEmail" type="text" value="[email protected]" maxlength="60" id="ctl00_cleanMainPlaceHolder_tbEmail" tabindex="3" class="textbox longTextBox">
<input type="hidden" name="ctl00$cleanMainPlaceHolder$hdnEmail" id="ctl00_cleanMainPlaceHolder_hdnEmail" value="[email protected]">
<span id="ctl00_cleanMainPlaceHolder_validateEmail" style="color:Red;display:none;">Invalid E-Mail</span>
</div>
</div>
<div id="commentWrapper" class="fieldWrapper">
<span class="styled">Comment:</span>
<div class="theField">
<textarea name="ctl00$cleanMainPlaceHolder$tbComment" rows="2" cols="20" id="ctl00_cleanMainPlaceHolder_tbComment" tabindex="4" class="textbox longTextBox"></textarea>
<input type="hidden" name="ctl00$cleanMainPlaceHolder$hdnComment" id="ctl00_cleanMainPlaceHolder_hdnComment">
</div>
</div>
Я вижу, что вы имеете в виду, я попытался с помощью кода вы предоставили, но опять ничего не печатает. Я пытаюсь получить текст из value = "username" value = "Полное имя" value = "[email protected]", поскольку я пытаюсь извлечь текст из формы. – nvachhan
Gotcha. Мой отредактированный ответ выше выводит ожидаемый результат, когда я инициализирую BeautifulSoup с исходным HTML-кодом, который вы предоставили. Если он по-прежнему ничего не выводит, его возможный «browser.page_source» - это не то, что вы ожидаете от него, или ваш парсер неправильно обрабатывает страницу. – lanceg
Я пробовал новую версию, которую вы написали, и все еще ничего, я помещаю 'except: print ('no text found')' просто посмотреть, будет ли он печатать что-нибудь, но все равно ничего, это кажется странным, я думаю, что вы правы, возможно, что-то не так с источником страницы. Я использую селен, чтобы перейти к этому вопросу в коде без проблем. – nvachhan