嗨,大家好,
我一直在使用stackoverflow来学习如何编写我的第一个python脚本。我实际上正在建立一个webscraper,我需要你的帮助/意见/带领我的小项目更进一步。
到目前为止,我可以登录网站,访问正确的页面,抓取所有表格,将数据放入列表,创建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')
答案 0 :(得分:0)
Session[ID] = objProductsData;
无效,因为列表从零开始,因此,请使用soup.find_all('table')[3]
答案 1 :(得分:0)
如果你想要第三个元素,你应该使用
tags = soup.find_all('table')
tags[2]
这将是你的第三个表而不是标签[3],因为计数从0开始而不是1。