2014-09-11 23 views
5

Tôi đang gặp một thời gian rất khó khăn để vượt BeautifulSoup để cạo một số dữ liệu cho tôi. Cách tốt nhất để truy cập ngày (số thực tế, 2008) từ mẫu mã này là gì? Đây là lần đầu tiên tôi sử dụng Beautifulsoup, tôi đã tìm ra cách để loại bỏ các url khỏi trang, nhưng tôi không thể thu hẹp nó xuống để chỉ chọn từ Date, và sau đó chỉ trả lại bất kỳ ngày nào theo sau (trong dd dấu ngoặc đơn). Là những gì tôi yêu cầu thậm chí có thể?Sử dụng BeautifulSoup để có được một giá trị sau một từ khóa cụ thể

<div class='dl_item_container clearfix detail_date'> 
    <dt>Date</dt> 
    <dd> 
     2008 
    </dd> 
</div> 
+0

Hiển thị những gì bạn đã thử? – fledgling

+0

Tôi đã cố gắng sử dụng soup.find_all theo những cách khác nhau, cũng soup.select ("dt"), mà được tất cả các nhãn, nhưng tôi muốn những gì họ đang ghi nhãn trong dấu ngoặc đ, nhưng không có nhãn, nếu tôi soup.select ("dd"), tôi nhận được rất nhiều giá trị mà tôi không muốn, tôi chỉ muốn giá trị cụ thể cho nhãn mà tôi đang tìm kiếm. – knames

Trả lời

11

Tìm dt thẻ by text và tìm next dd sibling:

soup.find('div', class_='detail_date').find('dt', text='Date').find_next_sibling('dd').text 

Các mã hoàn chỉnh:

from bs4 import BeautifulSoup 

data = """ 
<div class='dl_item_container clearfix detail_date'> 
    <dt>Date</dt> 
    <dd> 
    2008 
    </dd> 
</div> 
""" 

soup = BeautifulSoup(data) 
date_field = soup.find('div', class_='detail_date').find('dt', text='Date') 
print date_field.find_next_sibling('dd').text.strip() 

Prints 2008.

Các vấn đề liên quan