Python Web Scraper - Экспорт таблиц в Excel

Привет, ребята,

Я использовал stackru, чтобы узнать, как написать свой первый скрипт на Python. На самом деле я создаю веб-мастер, и мне нужна ваша помощь / мнение / руководство, чтобы продолжить мой маленький проект.

До сих пор я мог войти на сайт, получить доступ к нужной странице, очистить все таблицы, поместить данные в список, создать файл Excel.

Я бы хотел:

вместо очистки всех таблиц, я хотел бы получить только третью на HTML-странице

-экспорт списка в файле Excel

- узнать, есть ли решение очистить таблицу как есть и экспортировать ее в Excel, сохраняя тот же формат

from selenium import webdriver
from bs4 import BeautifulSoup
from xlwt import Workbook

browser = webdriver.Chrome()
browser.get("XXXXX")


# username
userElem = browser.find_element_by_xpath(".//*[@id='user_name_register']")
userElem.clear()
userElem.send_keys('XXXXX')

# Password
passwordElem = browser.find_element_by_xpath(".//*[@id='password_register']")
passwordElem.clear()
passwordElem.send_keys('XXXXX')

# Tick - keep me logged in
keeploggedin=browser.find_element_by_xpath(".//*[@id='persistent_cookie_p_register']")
keeploggedin.click()

# Login click
login=browser.find_element_by_xpath(".//*[@id='login_form']/fieldset/ul/li[4]/div/button")
login.click()

# Go to URL
link = "XXXXXXXXXXXXXX"
browser.get(link)

# Start scraping
html = browser.page_source
soup = BeautifulSoup(html)

lst = []
for tag in soup.find_all('table'):    ##IS THERE A WAY TO TAKE ONLY THE THIRD TABLE? I tried soup.find_all('table')[3] but it didn't work.
    txt = tag.text
    print(txt)
    lst.append(txt)

print(lst)

wb = Workbook()
sheet1 = wb.add_sheet('Paris')

sheet1.write(0,0,'TEST2')

wb.save('Rate Browser.xls')

2 ответа

Если вы хотите третий элемент, вы должны использовать

tags = soup.find_all('table') 
tags[2] 

это будет ваша третья таблица, а не теги [3], так как отсчет начинается с 0, а не с 1.

soup.find_all('table')[3] не будет работать, потому что список начинается с нуля, поэтому используйте soup.find_all('table')[2]

Другие вопросы по тегам