我是python
的新手并设法编写一个小程序(使用python3
)从网站检索信息。我有两个问题:
python
等待每个第80步,所以当我= 80,160,240等时。python
从网站上检索信息总数中存在多少步骤(因为页面之间的不同而不同),请参见下图。我可以在图中看到,在这个例子中,最大数量260是“硬编码的”?我可以告诉python
自己检索260(或者如果在另一个网页上发生变化,还可以检索任何其他数字)?python
检查脚本启动的当前页面是哪个,以便它可以调整i到页面的编号?通常我假设从第0页开始(i = 0),但是例如,如果我从第30页开始,我的脚本应该能够使i = 30,或者如果我从200开始,它应该能够调整i = 200等在进入while循环之前。我明白我在困扰什么?
这是伪代码:
import time
from selenium import webdriver
url = input('Please, enter url: ')
driver = webdriver.Firefox()
driver.get(url)
i = 0
while i > 260: # how to determine (book 1 = 260 / book 2 = 500)?
# do something
if i == 80: # each 80th page?
# pause
else:
# do something else
i = i + 1
else:
quit()
答案 0 :(得分:1)
1)睡觉
import time
....
if i % 80 == 0: # each 80th page?
# Wait for 5 seconds
time.sleep(5)
html = driver.find_element_by_css_selector('afterInput').get_attribute('innerHTML')
3)论点
import sys
....
currentPage = sys.argv[2]
或从源中提取(参见2)
答案 1 :(得分:1)
首先,如果你想知道你的i
是&#34;步骤&#34;(devision)是80,你可以使用模数符号,并检查它是否等于0,例如:< / p>
if i % 80 == 0:
time.sleep(1) # One second
其次,您需要查询从服务器收到的html,例如:
from selenium import webdriver
url = input('Please, enter url: ')
driver = webdriver.Firefox()
driver.get(url)
total_pages = driver.find_element_by_css_selector('afterInput').get_attribute('innerHTML').split()[1] # Take only the number
编辑后 :您要做的就是通过在脚本中定义变量/从命令行解析参数来为i
分配您想要的值从网站上抓下来。这取决于您的实施和需求。
其他说明
我知道你已经开始了步骤,但是如果你想改进你的代码并使其更加pythonic,我会做以下更改:
while
和i = i + 1
不是python中的常见模式,而是使用for i in range(total_pages)
- 当然您需要知道页数(来自您的第二个问题)quit()
,您的脚本无论如何都会在文件末尾结束。
while i < 260
。