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

аю сценарий, который очищает игры базы данных Team Liquid от международных игр StarCraft 2. (Http://www.teamliquid.net/tlpd/sc2-international/games)

Однако я сталкиваюсь с проблемой. У меня есть сценарий, проходящий по всем страницам, однако сайт Team Liquid использует какой-то AJAX, который я думаю в таблице, чтобы обновить его. Теперь, когда я использую BeautifulSoup, я не могу получить правильные данные.

Итак, я перебираю эти страницы:

http://www.teamliquid.net/tlpd/sc2-international/games#tblt-948-1-1-DESC

http://www.teamliquid.net/tlpd/sc2-international/games#tblt-948-2-1-DESC

http://www.teamliquid.net/tlpd/sc2-international/games#tblt-948-3-1-DESC

http://www.teamliquid.net/tlpd/sc2-international/games#tblt-948-4-1-DESC и т.д...

Когда вы открываете их сами, вы видите разные страницы, однако мой скрипт каждый раз получает одну и ту же первую страницу. Я думаю, что это потому, что при открытии других страниц вы видите некоторое время загрузки, которое обновляет таблицу с играми до нужной страницы. Поэтому я думаю, что beatifulsoup работает быстро и должен ждать загрузки и обновления таблицы.

Итак, мой вопрос:Как я могу убедиться, что он занимает обновленную таблицу?

Теперь я использую этот код для получения содержимого таблицы, после чего помещаю содержимое в .csv:

html = urlopen(url).read().lower()
bs = BeautifulSoup(html)
table = bs.find(lambda tag: tag.name=='table' and tag.has_key('id')
                and tag['id']=="tblt_table") 
rows = table.findAll(lambda tag: tag.name=='tr')