我正在尝试创建一个CSV文件,其中包含所有蛋白质名称,它们的PDB(蛋白质数据库(ID以及基于RSPB上的高级搜索查询的实验方法。有 444 个搜索结果,我想创建一个整洁的 CSV 文件。 这是搜索的链接。
我编写了以下脚本来提取有关第一个搜索结果的信息,但输出显示"无"。
import requests
from bs4 import BeautifulSoup
source = requests.get(url) # url is same as mentioned above
soup = BeautifulSoup(source.text, 'lxml')
item1 = soup.find('div', class_='row results-item')
页面的 HTML 代码似乎高度嵌套且令人困惑。
TL;DR我正在尝试在 csv 中获取以下内容,但 HTML 高度嵌套:(
1( PDB ID(4 位字母数字代码( 2(蛋白质复合物名称(例如:FKBP51的Fk1结构域... 3( 方法(X射线衍射、核磁共振等(
任何帮助或建议将不胜感激!
提前谢谢你:)
其实你不能用BeautifulSoup抓取这种网站。本网站使用内部CDN在网页上呈现数据。但是,我想出了一个解决方案,以JSON格式获取数据。
import requests
headers = {
"User-Agent": "Mozilla/5.0 (Linux; Android 5.0; SM-G900P
Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/80.0.3987.162 Mobile Safari/537.36"
}
payload = {
"query":{"type":"group","logical_operator":"and","nodes":
[{"type":"group","logical_operator":"and","nodes":
[{"type":"group","logical_operator":"and","nodes":
[{"type":"terminal","service":"text","parameters":
{"negation":False,"value":"plasmodium falciparum"},"node_id":0},
{"type":"group","logical_operator":"and","nodes":
[{"type":"terminal","service":"text","parameters": {"operator":"exact_match","negation":False,"value":"Homosapiens","attribute":"rcsb_entity_source_organism.ncbi_scientific_name"},"node_id":1}]}]}],"label":"text"}],"label":"query-builder"},"return_type":"entry","request_options":{"scoring_strategy":"combined","sort":[{"sort_by":"score","direction":"desc"}],"pager":{"start":0,"rows":100}},"request_info":{"src":"ui","query_id":"6878ab86935e083352a6914232c8b2e5"}}
response = requests.post('https://www.rcsb.org/search/data', headers=headers,
json=data)
print(response.json())
您还可以使用有效负载值来操作响应。希望这对你有帮助!!