python - 用 Python 从网站编写多个文件
问题描述
import pandas as pd
import requests
from bs4 import BeautifulSoup
df = pd.read_csv('env_sequences.csv')
Namedf = df['Name']
Uniprotdf = df['ID']
for row in Uniprotdf:
theurl = 'https://www.uniprot.org/uniprot/' + row + '.fasta'
page = requests.get(theurl).content
for row in Namedf:
fasta = open(row + '.txt', 'w')
fasta.write(page)
fasta.close()
#Sample website: https://www.uniprot.org/uniprot/P04578.fasta
我有一个 .csv 文件,我使用“ID”列生成指向要从中下载内容的网站的链接,并将其保存为同一 .csv 中“名称”列中的相应名称。
代码在第二个 for 循环后停止工作,在该循环中我尝试在 fasta.write() 函数中使用 page 变量时出现 TypeError。然而,如果我 print(page) 我能够输出我希望在每个文件中拥有的文本。这是我必须将 html 转换为字符串的情况吗?我不确定如何从这里开始。
解决方案
对于给定的url,如果您打印页面的内容,您会注意到它有 ' b'
' 表示它的binary
格式。
print (page)
b'>sp|P04578|ENV_HV1H2 Envelope glycoprotein gp160 OS=Human immunodeficiency virus type 1 group M subtype B (isolate HXB2) OX=11706 GN=env PE=1 SV=2\nMRVKEKYQHLWRWGWRWGTMLLGMLMICSATEKLWVTVYYGVPVWKEATTTLFCASDAKA\nYDTEVHNVWATHACVPTDPNPQEVVLVNVTENFNMWKNDMVEQMHEDIISLWDQSLKPCV\nKLTPLCVSLKCTDLKNDTNTNSSSGRMIMEKGEIKNCSFNISTSIRGKVQKEYAFFYKLD\nIIPIDNDTTSYKLTSCNTSVITQACPKVSFEPIPIHYCAPAGFAILKCNNKTFNGTGPCT\nNVSTVQCTHGIRPVVSTQLLLNGSLAEEEVVIRSVNFTDNAKTIIVQLNTSVEINCTRPN\nNNTRKRIRIQRGPGRAFVTIGKIGNMRQAHCNISRAKWNNTLKQIASKLREQFGNNKTII\nFKQSSGGDPEIVTHSFNCGGEFFYCNSTQLFNSTWFNSTWSTEGSNNTEGSDTITLPCRI\nKQIINMWQKVGKAMYAPPISGQIRCSSNITGLLLTRDGGNSNNESEIFRPGGGDMRDNWR\nSELYKYKVVKIEPLGVAPTKAKRRVVQREKRAVGIGALFLGFLGAAGSTMGAASMTLTVQ\nARQLLSGIVQQQNNLLRAIEAQQHLLQLTVWGIKQLQARILAVERYLKDQQLLGIWGCSG\nKLICTTAVPWNASWSNKSLEQIWNHTTWMEWDREINNYTSLIHSLIEESQNQQEKNEQEL\nLELDKWASLWNWFNITNWLWYIKLFIMIVGGLVGLRIVFAVLSIVNRVRQGYSPLSFQTH\nLPTPRGPDRPEGIEEEGGERDRDRSIRLVNGSLALIWDDLRSLCLFSYHRLRDLLLIVTR\nIVELLGRRGWEALKYWWNLLQYWSQELKNSAVSLLNATAIAVAEGTDRVIEVVQGACRAI\nRHIPRRIRQGLERILL\n'
打开文件时将 ' '更改为 ' w
'wb
应该可以修复它。此外, usingwith open ()
是处理文件的更 Pythonic 方式。
for row in Namedf:
with open ('url.txt','wb') as fasta:
file.write(page)
推荐阅读
- selenium - 无头 chrome 的字距问题
- selenium-webdriver - 如何创建xpath以从子节点回溯到父节点
- javascript - 删除具有和部分的字符串
- typescript - 保持 IE11 打开 2 天后出现内存泄漏
- php - GET方法错误:注意:未定义索引
- javascript - 使用函数在滞后脚本上加载动画
- python - 使用机器人框架将类的对象传递给另一个类
- unit-testing - 如何对无法构造时抛出的智能构造函数进行单元测试?
- symfony - 使用 SonataAdminBundle 显示大量数字
- java - 如何比较drools中数组列表的通用元素?