我有一种感觉,信息是在堆栈溢出的某个地方,但我找不到它:-/
我想从这个网站得到文本:https://www.uniprot.org/uniprot/P28653.fasta但我的代码返回'None '。所有的帮助是超级感激!
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)
返回[]
谢谢! !
网站中没有html。您可以直接打印r.content
(然而,我更喜欢r.text
,因为它是string
而不是bytes
对象),它将包含页面上的字符串。请记住,当您在chrome(或其他浏览器)中使用开发人员工具时,您在检查时看到的html不一定与请求将获得的结果相同。通常直接在浏览器中查看源代码(或打印出requests.get(url).text/.content
的结果)将使您更准确地了解正在处理的html。
就像评论说的,你正在看的网页只是纯文本。只有在处理.html
文件时才使用BeautifulSoup
。
要获取文本,只需要打印请求的内容。它看起来像这样:
data = requests.get("https://www.uniprot.org/uniprot/P28653.fasta").content
print(data)
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))
认为有拼写错误或错误的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>]