Python-запросы не извлекают все элементы - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь извлечь данные TR со следующей страницы: http://www.datasheetcatalog.com/catalog/p1342320.shtml

Я использую запросы и BeautifulSoup. Однако я не получаю все строки (только 12 вместо 22 из второй таблицы). У кого-нибудь есть объяснение этому (при условии, что при печати response.content есть строки)?

Вот код, который я использую:

from bs4 import BeautifulSoup
import requests

session = requests.Session()

url = 'http://www.datasheetcatalog.com/catalog/p1342320.shtml'
response = session.get(url)

soup = BeautifulSoup(response.content,"lxml")

trs=  soup.findAll('table')[8].findAll('tr')
print (len(trs))

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

После детального изучения html-страницы я обнаружил, что Beautifulsoup остановился после нажатия на комментарии ().Поэтому решение состоит в том, чтобы изменить синтаксический анализатор с "lxml" на "html5lib":

soup = BeautifulSoup(response.content,"html5lib")
0 голосов
/ 15 ноября 2018

HTML-код недействителен, что сломало BeautifulSoup здесь, чтобы исправить

....
html_doc = response.text.replace('<table <', '<')
html_doc = re.sub(r'<\!--\s+\d+\s+--\!>', '', html_doc)
html_doc = re.sub(r'</?font.*?>' ,'', html_doc)
soup = BeautifulSoup(html_doc, "html.parser")

trs=  soup.findAll('table')[8].findAll('tr')
print (len(trs))

Примечание: использование lxml возвращает 7, а не 22 * ​​1006 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...