私は、オンラインプロットの軸とそれに関連付けられているテキストの色などのいくつかの機能をスクラップしようとしていますが、スクレイピングをほとんど使用しないので、 。これはおそらく、定期的にスクレーパーを使用する誰にとっても簡単な修正です。ここに私のコードは次のとおりです。ウェブのスクラップネストされたテキスト機能
from bs4 import BeautifulSoup
import requests
def get_IPF_transcriptome_groups():
url = "https://research.cchmc.org/pbge/lunggens/lungDisease/celltype_IPF.html?cid=1"
r = requests.get(url)
data=r.text
soup = BeautifulSoup(data)
for d in soup.find('div', attrs={'id':'wrapper'}).find(
'div', attrs={'class':'content'}).find(
'div', attrs={'id':'ResPanel'}).find(
'table', attrs={'id':'maintable'}).find(
'tbody'):
print(d)
私はエラーを取得する:
'tbody'):
TypeError: 'NoneType' object is not iterable
私はコードはテーブル本体を介して取得することができないと思います。
<tspan style="fill:#006600;font-size:7px;">CC002_33_N709_S503_C10</tspan>
:私が解析しているよ実際のテキストは、「DIV」、「TD」、「TR」、「G」、などとfolowingのように見えるなど、いくつかの他のタグによってこのことを少し深く埋め込まれた部分れますここで 'CC002_33_N709_S503_C10'はサンプル参照番号で、 '#006600'は色です。このような540行(私は考える)があります。誰かが助けることができれば本当に素晴らしいだろうか?多くのおかげで
ウダイからの応答に基づいて編集:提案のための
おかげで、私はそれに「findAllの」構築されており、次のピースを取得するために、インデックスを使用しました。この提案のhereは、 'tbody'タグがソースコードの一部でない可能性があるため、このタグを削除すると述べています。ちょうど 'tspan'を追加するだけで私が必要なものを返すようではありません。ここに私の更新されたコードがあります:
for d in soup.find('div', attrs={'id':'wrapper'}).find(
'div', attrs={'class':'content'}).find(
'div', attrs={'id':'ResPanel'}).find(
'table', attrs={'id':'maintable'}).findAll(
'tr')[2].findAll('td')[0].find('div', attrs={'id':'sigheatmapcontainer'}):
print(d)
これ以上の提案は本当に役に立ちますか?
のようなエラー 'TypeError例外場合:「NoneType」オブジェクトがないiterable'は最終返すオブジェクトが(' '(「TBODY」)を見つける。)ループのための**を実行するためのリストではないことを言います**。 'find_all( 'tbody')'を実行してテーブルの内容を取得してください。 –
コードは 'sigheatmapcontainer'にクラッシュすることなく実行されますが、空であるように見えますし、次のdivを見つけようとすると:.find( TypeErrorを返します: 'NoneType'オブジェクトは反復不可能です – user3062260