如何使用Python登录网站并在其中执行操作?

如何使用Python登录网站并在其中执行操作?,python,login,web,Python,Login,Web,以下是实现自动化所需的步骤: 1) 登录 2) 从下拉菜单中选择一个选项(以访问产品列表) 3) 在搜索字段中搜索某些内容(我们正在寻找的产品) 4) 单击链接(打开产品选项) 5) 单击另一个链接(以更大的.pdf格式编译与所述产品相关的所有.pdf文件) 6) 等待.pdf加载,然后下载。(将.pdf保存在我的机器上,并将产品名称作为文件名) 我想知道这是否可行。如果是的话,我在哪里可以找到如何做呢?关键是要有实际的点击吗?如果您只是想下载PDF,那么我建议您使用请求库。您可能还想考虑使用S

以下是实现自动化所需的步骤:

1) 登录

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

3) 在搜索字段中搜索某些内容(我们正在寻找的产品)

4) 单击链接(打开产品选项)

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

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


我想知道这是否可行。如果是的话,我在哪里可以找到如何做呢?

关键是要有实际的点击吗?如果您只是想下载PDF,那么我建议您使用请求库。您可能还想考虑使用Suryy。 在站点搜索方面,您可能希望使用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)

对于静态站点,您可以使用PyPi提供的模块,该模块可以完成您想要的所有操作—除了它不运行Javascript,因此无法在动态站点上运行。而且严格来说,它只是Python2

easy_install mechanize

对于更复杂的情况,您可能必须使用Selenium的python绑定来控制外部浏览器;或者使用嵌入web浏览器的。但是,设置这两个驱动程序要困难得多。

当然,只需使用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或其他方式查找元素

您可以使用像selenium这样的Web驱动程序,它提供了python api。请分享您迄今为止的尝试。