2016-12-17 3 views
0

Я очищаю веб-страницу, и она работала неплохо, за исключением части, где re.compile() возвращает empty [], в то время как текст, переданный ей, присутствует. Вот мой скрип кодBeautifulSoup возвращает [], когда присутствует строка

dob = soup.find(text = re.compile('Date of Birth')).findNext('td').text 
print(dob) 

father_name = soup.find(text = re.compile("Father's Name")).findNext('td').text 
print(father_name) 

mob_no_parent = soup.find(text = re.compile("Mobile Number")).findNext('td').text 
print(mob_no_parent) 

mob_no_student = soup.findAll(text = re.compile("Mobile Number(Student)")) 
print(mob_no_student) 

email = soup.find(text = re.compile("E - Mail Address")).findNext('td').text 
print(email) 

p_address = soup.find(text = re.compile("PermanentAddress")).findNext('td').text 
print(p_address) 

Приведенный выше код работает отлично на каждом тексте, кроме

mob_no_student = soup.findAll(text = re.compile("Mobile Number(Student)")) 
print(mob_no_student) 

выше один возвращает []

Вот мой HTML код

<td align="left" width="50%" class="inner_padding_even">&nbsp;&nbsp;Registration No </td> 
<td align="left" width="50%" class="inner_padding_even">CPT0000</td> 
</tr> 
<tr> 
<td align="left" width="50%" class="inner_padding_odd">&nbsp;&nbsp;Name of Candidate</td> 
<td align="left" width="50%" class="inner_padding_odd"><font face=arial size=2>KKKKKKK B.</font></td> 
</tr> 
<tr> 
<td align="left" class="inner_padding_even">&nbsp;&nbsp;Date of Birth</td> 
<td align="left" class="inner_padding_even">16.11.1900</td> 
</tr> 
<tr> 
<td align="left" class="inner_padding_even">&nbsp;&nbsp;Father's Name</td> 
<td align="left" class="inner_padding_even">BBBBBBBB.</td> 
</tr> 
<tr> 
<td align="left" class="inner_padding_even">&nbsp;&nbsp;Mobile Number</font>(Parent)</td> 
<td align="left" class="inner_padding_even">99999999999</td> 
</tr> 
<tr> 
<td align="left" class="inner_padding_odd">&nbsp;&nbsp;Mobile Number(Student)</td> 
<td align="left" class="inner_padding_odd">9999999999</td> 

</tr> 
<tr> 
<td align="left" class="inner_padding_even">&nbsp;&nbsp;E - Mail Address</td> 
<td align="left" class="inner_padding_even">[email protected]</td> 
</tr> 
<tr> 
<td width="50%" align="left" class="inner_padding_even">&nbsp;Permanent Address</td> 
<td width="50%" align="left" class="inner_padding_even">Blah blah</td> 
</tr> 

Что мне здесь не хватает?

ответ

2

В регулярном выражении, вам нужно, чтобы избежать скобок, если не будет относиться к группе

Попробуйте

mob_no_student = soup.findAll(text = re.compile("Mobile Number\(Student\)")) 
+0

Великий ответ ... кроме того, они являются скобкой не скобками. Конечно, скобки тоже нужно избегать, но они являются родителями. – tdelaney

+0

Это работает, отличная помощь! спасибо –

Смежные вопросы