我感觉信息在堆栈溢出的某个地方,但我找不到它:-/
我希望从本网站获取文本:https://www.uniprot.org/uniprot/P28653.fasta,但我的代码返回“无”。非常感谢所有帮助!
import requests
from bs4 import BeautifulSoup as bs
r = requests.get('http://www.uniprot.org/uniprot/P28653_PGS1_MOUSE.fasta')
soup = bs(r.content, 'html.parser')
lst = soup.find_all('pre')
print(lst)
返回
[]
谢谢!!
答案 0 :(得分:1)
网站中没有 html。您可以直接打印 r.content
(但是,我更喜欢 r.text
因为它是一个 string
而不是 bytes
对象),它将包含页面上的字符串。请记住,当您在 chrome(或其他浏览器)中使用开发人员工具时,您在检查时看到的 html 不一定与请求获得的结果相同。通常直接在浏览器中查看源代码(或打印出 requests.get(url).text/.content
的结果)可以更准确地了解您正在处理的 html。
答案 1 :(得分:1)
正如评论所说,您正在查看的网页只是纯文本。只有在处理 BeautifulSoup
文件时才使用 .html
。
要获取文本,您只需打印请求的内容。它看起来像这样:
data = requests.get("https://www.uniprot.org/uniprot/P28653.fasta").content
print(data)
答案 2 :(得分:1)
BeautifulSoup 提供了一种查找文本内容的简单方法.find(text=True)
import requests
from bs4 import BeautifulSoup as bs
r = requests.get('http://www.uniprot.org/uniprot/P28653_PGS1_MOUSE.fasta')
soup = bs(r.content, 'html.parser')
print(soup.find(text=True))
答案 3 :(得分:0)
认为执行您的方法时存在拼写错误或错误的 url - 将 url 更改为 http://www.uniprot.org/uniprot/P28653_PGS1_MOUSE
,您将获得一个包含两个元素的列表,您可以通过循环或直接访问这些元素,例如lst[1]
获取序列。
代码
import requests
from bs4 import BeautifulSoup as bs
r = requests.get('http://www.uniprot.org/uniprot/P28653_PGS1_MOUSE')
soup = bs(r.content, 'html.parser')
lst = soup.find_all('pre')
print(lst)
输出
[<pre>>sp|P28653|PGS1_MOUSE Biglycan OS=Mus musculus OX=10090 GN=Bgn PE=1 SV=1
MCPLWLLTLLLALSQALPFEQKGFWDFTLDDGLLMMNDEEASGSDTTSGVPDLDSVTPTF
SAMCPFGCHCHLRVVQCSDLGLKTVPKEISPDTTLLDLQNNDISELRKDDFKGLQHLYAL
VLVNNKISKIHEKAFSPLRKLQKLYISKNHLVEIPPNLPSSLVELRIHDNRIRKVPKGVF
SGLRNMNCIEMGGNPLENSGFEPGAFDGLKLNYLRISEAKLTGIPKDLPETLNELHLDHN
KIQAIELEDLLRYSKLYRLGLGHNQIRMIENGSLSFLPTLRELHLDNNKLSRVPAGLPDL
KLLQVVYLHSNNITKVGINDFCPMGFGVKRAYYNGISLFNNPVPYWEVQPATFRCVTDRL
AIQFGNYKK
</pre>, <pre class="sequence"> 10 20 30 40 50<br/>MCPLWLLTLL LALSQALPFE QKGFWDFTLD DGLLMMNDEE ASGSDTTSGV <br/> 60 70 80 90 100<br/>PDLDSVTPTF SAMCPFGCHC HLRVVQCSDL GLKTVPKEIS PDTTLLDLQN <br/> 110 120 130 140 150<br/>NDISELRKDD FKGLQHLYAL VLVNNKISKI HEKAFSPLRK LQKLYISKNH <br/> 160 170 180 190 200<br/>LVEIPPNLPS SLVELRIHDN RIRKVPKGVF SGLRNMNCIE MGGNPLENSG <br/> 210 220 230 240 250<br/>FEPGAFDGLK LNYLRISEAK LTGIPKDLPE TLNELHLDHN KIQAIELEDL <br/> 260 270 280 290 300<br/>LRYSKLYRLG LGHNQIRMIE NGSLSFLPTL RELHLDNNKL SRVPAGLPDL <br/> 310 320 330 340 350<br/>KLLQVVYLHS NNITKVGIND FCPMGFGVKR AYYNGISLFN NPVPYWEVQP <br/> 360 <br/>ATFRCVTDRL AIQFGNYKK <br/></pre>]