Я пытаюсь создать инструмент для очистки веб-страниц, используя Python и BeautifulSoup, который входит в eBay Featured Collection и извлекает URL-адреса всех продуктов в коллекции (в большинстве коллекций есть 17 продуктов, хотя некоторые из них имеют несколько больше или меньше). Вот URL для коллекции я пытаюсь скрести в моем коде: http://www.ebay.com/cln/ebayhomeeditor/Surface-Study/324079803018Скребок eBay отображает коллекции ссылок на страницы продуктов
Вот мой код до сих пор:
import requests
from bs4 import BeautifulSoup
url = 'http://www.ebay.com/cln/ebayhomeeditor/Surface-Study/324079803018'
soup = BeautifulSoup(requests.get(url).text, 'html.parser')
product_links = []
item_thumb = soup.find_all('div', attrs={'class':'itemThumb'})
for link in item_thumb:
product_links.append(link.find('a').get('href'))
print product_links
Этот скребок должен Append 17 ссылок на список product_links. Однако он работает только частично. В частности, он каждый раз сбрасывает первые 12 ссылок на продукты, оставляя оставшиеся 5 нетронутыми, даже несмотря на то, что все 17 ссылок найдены в тех же тегах и атрибутах HTML. Глядя более внимательно на страницах HTML-коде, единственное различие, которое я нашел, что первые 12 ссылок и окончательную 5 отделены друг от друга куска XML скрипта, который я включил здесь:
<script escape-xml="true">
if (typeof(collectionState) != 'object') {
var collectionState = {
itemImageSize: {sWidth: 280, sHeight: 280, lWidth: 580, lHeight: 620},
page: 1,
totalPages: 2,
totalItems: 17,
pageId: '2057253',
currentUser: '',
collectionId: '323101965012',
serviceHost: 'svcs.ebay.com/buying/collections/v1',
owner: 'ebaytecheditor',
csrfToken: '',
localeId: 'en-US',
siteId: 'EBAY-US',
countryId: 'US',
collectionCosEnabled: 'true',
collectionCosHostExternal: 'https://api.ebay.com/social/collection/v1',
collectionCosEditEnabled: 'true',
isCollectionReorderEnabled: 'false',
isOwnerSignedIn: false || false,
partiallySignedInUser: '@@[email protected]@[email protected]@',
baseDomain: 'ebay.com',
currentDomain: 'www.ebay.com',
isTablet: false,
isMobile: false,
showViewCount: true
};
}
</script>
Какова функция этот скрипт? Возможно ли, что этот сценарий является причиной того, что мой скребок пренебрегает очисткой последних 5 ссылок? Есть ли способ обойти это и изменить последние пять?
Это происходит потому, что следующие 5 ссылок загружаются с использованием JavaScript. –