重复计划&更改CSS选择器

时间:2016-07-06 17:24:07

标签: python excel web-scraping screen-scraping

我对编写Python这么新,我甚至不确定如何搜索我寻求的答案,我很抱歉当然要求提供易于存在的信息。

我正在编写一个程序,用于从Excel电子表格中提取帐号,在浏览器中打开帐户信息,从帐户页面中删除信息,然后将数据输入电子表格。我有两个问题:

我需要创建一个循环,在完成先前帐户的整个抓取过程后,在电子表格中提取下一个帐号,我不知道如何执行此操作:A2>> A500。

我的另一个问题是,帐户页面上的某个图表为每个帐户都有唯一的css选择器。这意味着,虽然它是所有估价信息,位于相同的地方,相同的格式等。我不能只键入('#table-740> tbody:nth -.....')并期望它工作。我正在使用以下代码:

oldValuation = browser.find_element_by_css_selector ('unique css selector')

这个问题是如何解决的?

我的基本代码如下:

import bs4, requests, openpyxl
import os
os.chdir('C:\\Users\\al\\Desktop')

addresses = openpyxl.load_workbook ('Book4.xlsx')
type (addresses)
sheet = addresses.get_sheet_by_name ('Sheet1')
cell = sheet ['E2']

通过抓取代码运行数据后,我需要循环回上面的代码来拉出不同的帐号..想知道我是否需要for语句?

感谢您的耐心和帮助!

1 个答案:

答案 0 :(得分:0)

你肯定需要一个循环。使用iter_rows()逐行迭代工作表:

for row in sheet.iter_rows(row_offset=1):  # start with row 2
    cells = list(row)
    account_number = cells[0].value

然后,您可以使用字符串格式来动态构造CSS选择器:

value_unique_for_account = cells[1]  # assuming it is in the B column
selector = "#table-%d > tbody:nth-child(2) > tr:nth-child(1) > td:nth-child(6)" % value_unique_for_account

oldValuation = browser.find_element_by_css_selector(selector)