网页抓取(蛋白质数据库)使用beautifulsoup和Python3的高度嵌套标签



我正在尝试创建一个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())

您还可以使用有效负载值来操作响应。希望这对你有帮助!!

最新更新