Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Python:如何访问网页、单击特定链接并将其中的数据复制到文本文件?_Javascript_Python_Html_Bioinformatics_Biopython - Fatal编程技术网

Javascript Python:如何访问网页、单击特定链接并将其中的数据复制到文本文件?

Javascript Python:如何访问网页、单击特定链接并将其中的数据复制到文本文件?,javascript,python,html,bioinformatics,biopython,Javascript,Python,Html,Bioinformatics,Biopython,我对python和编程非常陌生,我所知道的只是为日常办公室工作编写简单的脚本。然而,我遇到了一个场景,我必须使用python访问特定网页,这是特定生物信息学web服务器的搜索输出 在该网页中,有一个表格,其中第二列是一个超链接,打开一个小弹出框,其中包含蛋白质序列的FASTA文件 我希望能够编写一个脚本,系统地单击这些链接,一个接一个,复制每个链接的FASTA序列,并将它们粘贴到文本文件中 python可以实现这种自动化吗?如果是的话,我应该从哪里开始,在访问internet explorer/

我对python和编程非常陌生,我所知道的只是为日常办公室工作编写简单的脚本。然而,我遇到了一个场景,我必须使用python访问特定网页,这是特定生物信息学web服务器的搜索输出

在该网页中,有一个表格,其中第二列是一个超链接,打开一个小弹出框,其中包含蛋白质序列的FASTA文件

我希望能够编写一个脚本,系统地单击这些链接,一个接一个,复制每个链接的FASTA序列,并将它们粘贴到文本文件中

python可以实现这种自动化吗?如果是的话,我应该从哪里开始,在访问internet explorer/网页等的模块方面。?如果你能给我一个正确的方向或者给我一个脚本示例,我可以试着自己做

非常感谢你


我会发布我尝试过的东西,但我真的不知道从哪里开始

对我来说,这大约需要一分钟半的时间,然后它会打开一个包含序列的文本文件。当然,您需要在最后添加您的凭据等

import os
import mechanize
import cookielib
from bs4 import BeautifulSoup
from urlparse import urljoin

class SequenceDownloader(object):

    def __init__(self, base_url, analyzes_page, email, password, result_path):
        self.base_url = base_url
        self.login_page = urljoin(self.base_url, 'login')
        self.analyzes_page = urljoin(self.base_url, analyzes_page)
        self.email = email
        self.password = password
        self.result_path = result_path
        self.browser = mechanize.Browser()
        self.browser.set_handle_robots(False)

        # set cookie
        cj = cookielib.CookieJar()
        self.browser.set_cookiejar(cj)

    def login(self):
        self.browser.open(self.login_page)
        # select the first (and only) form and log in
        self.browser.select_form(nr=0)
        self.browser.form['email'] = self.email 
        self.browser.form['password'] = self.password 
        self.browser.submit()

    def get_html(self, url):
        self.browser.open(url)
        return self.browser.response().read()

    def scrape_overview_page(self, html):
        sequences = []
        soup = BeautifulSoup(html)
        table = soup.find('table', {'class': 'styled data-table'})
        table_body = table.find('tbody')

        rows = table_body.find_all('tr', {'class': 'search_result'})
        for row in rows:
            cols = row.find_all('td')
            sequence_url = cols[1].a.get('href')
            sequence_html = self.get_html(sequence_url)
            sequence_soup = BeautifulSoup(sequence_html)
            sequence = sequence_soup.find('pre').text
            sequences.append(sequence)
        return sequences

    def save(self, sequences):
        with open(result_path, 'w') as f:
            for sequence in sequences:
                f.write(sequence + '\n')

    def get_sequences(self):
        self.login()
        overview_html = self.get_html(self.analyzes_page)
        sequences = self.scrape_overview_page(overview_html)
        self.save(sequences)


if __name__ == '__main__':
    base_url = r'https://usgene.sequencebase.com'
    analyzes_page = 'user/reports/123/analyzes/9876'
    email = 'user1998510@gmail.com'
    password = 'YourPassword'
    result_path = r'C:path\to\result.fasta'

    sd = SequenceDownloader(base_url, analyzes_page, email, password, result_path)
    sd.get_sequences()
    os.startfile(result_path)

在这里查看并尝试阅读urllib文档:您能给出您试图访问的特定生物信息学web服务器的名称/URL吗?您的问题属于我们称之为web垃圾的类别。请参阅此位置,了解一些python工具,这些工具可以帮助您非常感谢您的回复@BioGeek,web服务器是汤森路透的专有服务器。如果你想试一试,你可以试一试30天。它被称为SequenceBase。哇!我非常感谢像你这样的人,花时间去解决一个陌生人的问题,花时间回答这个问题,并教育像我这样的初学者!非常感谢你的剧本。我正在仔细研究,看看您使用了哪些模块(我已经下载了mechanize、BeautifulSoup)。我假设cookielib和urlparse/urljoin是Python2.7(我的版本)的一部分,因为它没有标记任何错误。我更改了底部的用户名/id/analysis页面等选项。但是,当我运行脚本时,仍然会出现错误。我在下一条消息中发布了这条消息。
Traceback(最近一次调用最后一次):文件“Path/Sequence\u retrieval\u from\u SequenceBase\u Stackoverflow.py”,第71行,在sd.get\u sequences()文件“Path/Sequence\u retrieval\u from\u SequenceBase\u Stackoverflow.py”,第59行,在get\u sequences sequences sequences sequences=self.scrap\u overview\u overview\u页面(over“从SequenceBase\u Stackoverflow.py检索路径/序列”,第37行,在scrape\u overview\u page soup=BeautifulSoup(html)中TypeError:“module”对象不可调用
啊,这与BeautifulSoup 3/Beautiful Soup 4有关。我现在得到了bs4。嘿,BioGeek,很抱歉延迟响应,但是是的!最后它与bs4完美配合!脚本很棒。当然,在我抱怨不应该让用户编写自己的脚本后,网站自己添加了该功能自己的脚本,我们支付使用该服务的钱!