0

这些是我需要自动化的步骤:

1) 登录

2) 从下拉菜单中选择一个选项(访问产品列表)

3)在搜索字段中搜索一些东西(我们正在寻找的产品)

4) 点击一个链接(打开产品的选项)

5)单击另一个链接(将与所述产品相关的所有.pdf文件编译为更大的.pdf)

6)等待.pdf加载然后下载。(将.pdf保存在我的机器上,以产品名称作为文件名)

我想知道这是否可能。如果是,我在哪里可以找到如何做到这一点?

4

3 回答 3

1

涉及实际点击是否至关重要?如果您只是想下载 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)
于 2013-08-07T23:23:09.490 回答
1

对于静态站点,您可以使用 PyPi 提供的mechanize模块,它可以满足您的所有需求 - 除了它不运行 Javascript,因此不适用于动态网站。它也只是严格意义上的 Python 2。

easy_install mechanize

对于更复杂的事情,您可能必须使用 Selenium 的 python 绑定(安装说明)来控制外部浏览器;或使用嵌入网络浏览器的spynner。但是,这两个设置起来要困难得多。

于 2013-08-07T23:23:28.827 回答
0

当然,只需使用 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 或其他东西找到元素......

于 2013-08-07T23:28:32.073 回答