Python Web Scraper - 表导出为ex​​cel

时间:2017-01-19 12:15:18

标签: python scraper

嗨,大家好,

我一直在使用stackoverflow来学习如何编写我的第一个python脚本。我实际上正在建立一个webscraper,我需要你的帮助/意见/带领我的小项目更进一步。

到目前为止,我可以登录网站,访问正确的页面,抓取所有表格,将数据放入列表,创建Excel文件

我想:

- 而不是抓取所有表格,我想获得html页面中的第三个

- 导出excel文件中的列表

- 知道是否有解决方案来刮擦表格并将其导出为ex​​cel保持相同的格式

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 个答案:

答案 0 :(得分:0)

Session[ID] = objProductsData; 无效,因为列表从零开始,因此,请使用soup.find_all('table')[3]

答案 1 :(得分:0)

如果你想要第三个元素,你应该使用

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

这将是你的第三个表而不是标签[3],因为计数从0开始而不是1。