首页 > 解决方案 > 如何从网络上抓取一个类的属性的所有子项?

问题描述

我尝试使用 BeautifulSoup4 在网站中获取突出显示的区域(在屏幕截图中),但我无法得到我想要的。也许你有一个建议用另一种方式来做。

我需要从中获取数据的网站的屏幕截图

from bs4 import BeautifulSoup
import requests
import pprint
import re
import pyperclip
import urllib
import csv
import html5lib

urls = ['https://e-mehkeme.gov.az/Public/Cases?page=1',
        'https://e-mehkeme.gov.az/Public/Cases?page=2'
        ]

# scrape elements
for url in urls:
    response = requests.get(url)
    soup = BeautifulSoup(response.content, "html.parser")
    content = soup.findAll("input", class_="casedetail filled")
    print(content)

我的预期输出是这样的:

Ətraflı məlumat: 

İşə baxan hakim və ya tərkib 
Xəyalə Cəmilova - sədrlik edən hakim
İlham Kərimli - tərkib üzvü
İsmayıl Xəlilov - tərkib üzvü

Tərəflər 
Cavabdeh: MAHMUDOV MAQSUD SOLTAN OĞLU
Cavabdeh: MAHMUDOV MAHMUD SOLTAN OĞLU
İddiaçı: QƏHRƏMANOVA AYNA NUĞAY QIZI

İşin mahiyyəti
Mənzil mübahisələri - Mənzildən çıxarılma

标签: python-3.xweb-scrapingbeautifulsoup

解决方案


使用基本 url 首先获取所有caseid,然后将这些 caseid 传递给目标 url,然后获取第一个 td 标记的值。

import requests
from bs4 import BeautifulSoup
urls = ['https://e-mehkeme.gov.az/Public/Cases?page=1',
        'https://e-mehkeme.gov.az/Public/Cases?page=2'
        ]

target_url="https://e-mehkeme.gov.az/Public/CaseDetail?caseId={}"

for url in urls:
    response = requests.get(url)
    soup = BeautifulSoup(response.content, "html.parser")

    for caseid in soup.select('input.casedetail'):
        #print(caseid['value'])
        soup1=BeautifulSoup(requests.get(target_url.format(caseid['value'])).content,'html.parser')
        print(soup1.select_one("td").text)

推荐阅读