这些是我需要自动化的步骤:
1) 登录
2) 从下拉菜单中选择一个选项(访问产品列表)
3)在搜索字段中搜索一些东西(我们正在寻找的产品)
4) 点击一个链接(打开产品的选项)
5)单击另一个链接(将与所述产品相关的所有.pdf文件编译为更大的.pdf)
6)等待.pdf加载然后下载。(将.pdf保存在我的机器上,以产品名称作为文件名)
我想知道这是否可能。如果是,我在哪里可以找到如何做到这一点?
涉及实际点击是否至关重要?如果您只是想下载 PDF,那么我建议您使用 Requests 库。您可能还想考虑使用 Scrapy。
在网站上搜索方面,您可能希望使用 Fiddler 捕获 HTTP POST 请求,然后在 Python 中复制该请求。
下面是一些可能有用的代码作为起点——这些函数将登录到服务器并下载目标文件。
def login():
login_url = 'http://www.example.com'
payload = 'usr=username&pwd=password'
connection = requests.Session()
post_login = connection.post(data=payload,
url=login_url,
headers=main_headers,
proxies=proxies,
allow_redirects=True)
def download():
directory = "C:\\example\\"
url = "http://example.com/download.pdf"
filename = directory + '\\' + url[url.rfind("/")+1:]
r = connection.get(url=url,
headers=main_headers,
proxies=proxies)
file_size = int(r.headers["Content-Length"])
block_size = 1024
mode = 'wb'
print "\tDownloading: %s [%sKB]" % (filename, int(file_size/1024))
if r.status_code == 200:
with open(filename, mode) as f:
for chunk in r.iter_content(block_size):
f.write(chunk)
当然,只需使用 selenium webdriver
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('http://your-website.com')
search_box = browser.find_element_by_css_selector('input[id=search]')
search_box.send_keys('my search term')
browser.find_element_by_css_selector('input[type=submit']).click()
这将使您通过访问页面,输入搜索词,单击搜索,您的问题阶段。阅读其余部分的 api。
Mechanize 目前有问题,因为很多网页都是通过 javascript 生成的。如果它没有呈现,你就不能对页面做很多事情。
如果您了解 css 选择器,它会有所帮助,否则您可以通过 id、xpath 或其他东西找到元素......