Tôi muốn thực hiện thay thế rất đơn giản bằng cách sử dụng Súp đẹp. Giả sử tôi muốn truy cập tất cả thẻ A trong một trang và nối "? Foo" vào href của họ. Ai đó có thể đăng bài hoặc liên kết đến một ví dụ về làm thế nào để làm một cái gì đó đơn giản như thế?Tôi có thể tìm thấy một số ví dụ về món súp tuyệt vời "chào thế giới" ở đâu?
7
A
Trả lời
14
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup('''
<html>
<head><title>Testing</title></head>
<body>
<a href="http://foo.com/">foo</a>
<a href="http://bar.com/bar">Bar</a>
</body>
</html>''')
for link in soup.findAll('a'): # find all links
link['href'] = link['href'] + '?foo'
print soup
Đó in:
<html>
<head><title>Testing</title></head>
<body>
<a href="http://foo.com/?foo">foo</a>
<a href="http://bar.com/bar?foo">Bar</a>
</body>
</html>
Các documentation cũng có một số examples for changing attributes. Đây là một hướng dẫn mở rộng bao gồm tất cả các khía cạnh phổ biến của BeautifulSoup. Tôi không biết những gì còn thiếu trong tài liệu, có lẽ bạn nên làm rõ.
1
ví dụ của tôi:
HEADERS = {"User-Agent" : "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5",
"Accept" : "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language" : "ru,en-us;q=0.7,en;q=0.3",
"Accept-Charset" : "windows-1251,utf-8;q=0.7,*;q=0.7",
"Accept-Encoding" : "identity, *;q=0",
"Connection" : "Keep-Alive"}
PROXY=None
timeout=60
def parse_manuf_page_about(page_str_about):
slovar={}
global timeout
socket.setdefaulttimeout(timeout)
if PROXY is not None:
proxy_handler = urllib2.ProxyHandler({ "http": "http://"+PROXY+"/" })
opener = urllib2.build_opener(proxy_handler)
urllib2.install_opener(opener)
page_request = urllib2.Request(url=page_str_about, headers=HEADERS)
try:
#print "Page reading ... %s" %page_str
page_zapr = urllib2.urlopen(url=page_request)
page=page_zapr.read()
except Exception ,error:
print str(error)
res=False
return res,slovar
soup = BeautifulSoup(page)
select_pod=soup.findAll('div', {"class":"win aboutUs"})
promeg= select_pod[0].findAll("p")[0]
zerro_br= promeg.findAll(text=True)
Company_Info=" ".join(zerro_br).strip(" \t\n")
select =soup.findAll('div', {"class":"win"})
cells_tabl= select[0].findAll("tr")
for yach in cells_tabl:
text_zag=yach.findAll("th")
for zn_yach in text_zag:
if len(zn_yach)>0:
txt_zn_yach="".join(zn_yach.findAll(text=True)).strip(" \t\n")
else:
txt_zn_yach= zn_yach.contents[0].strip(" \t\n")
#print txt_zn_yach
text_znach_td=yach.findAll("td")
for zn_yach_td in text_znach_td:
if len(zn_yach_td)>0:
txt_zn_yach_td="".join(zn_yach_td.findAll(text=True)).strip(" \t\n")
else:
txt_zn_yach_td= zn_yach.contents[0].strip(" \t\n")
#print txt_zn_yach_td
# Делаем замены неугодных символов/Replase browsers char
if " " in txt_zn_yach_td:
while txt_zn_yach_td.find("nbsp;")>0:
pos_gavna=txt_zn_yach_td.find(" ")
txt_zn_yach_td=txt_zn_yach_td[:pos_gavna]+txt_zn_yach_td[pos_gavna+6:]
if """ in txt_zn_yach_td:
while txt_zn_yach_td.find("quot;")>0:
pos_gavna=txt_zn_yach_td.find(""")
txt_zn_yach_td=txt_zn_yach_td[:pos_gavna]+'"'+txt_zn_yach_td[pos_gavna+6:]
if "&" in txt_zn_yach_td:
while txt_zn_yach_td.find("&")>0:
pos_gavna=txt_zn_yach_td.find("&")
txt_zn_yach_td=txt_zn_yach_td[:pos_gavna]+'&'+txt_zn_yach_td[pos_gavna+6:]
slovar[str(txt_zn_yach)]=txt_zn_yach_td
slovar["Company_Info"]=Company_Info
# разбираем нижнюю таблицу с контактом и вытаскиваем оттуда имя контакта | get name contacts
select_contact=soup.findAll('a', {"class":"member-name"})
for contact_person in select_contact:
slovar["Contact_Person"]= contact_person.contents[0]
# получаем статус голд партнера по наличию таблички в левом верхнем углу | get Gold status
select_gold_part=soup.findAll('a', {"class":"memberLogo"})
if len(select_gold_part)==0:
slovar["Gold member"]="N"
else:
slovar["Gold member"]="Y"
res=True
return res,slovar
Mã này phân tích một trang của manufactury trên Alibaba.com. Bạn có thể xem trang đó - http://xmxinhuafeng.en.alibaba.com/aboutus.html
Các vấn đề liên quan
- 1. Tìm kiếm một số ví dụ về ứng dụng GUI có thiết kế tuyệt vời
- 2. Tôi có thể tìm thấy một số ví dụ hay về giao diện người dùng Android ở đâu?
- 3. Tôi có thể tìm thấy một số ví dụ về mã số Scales Xml
- 4. Tôi có thể tìm các ví dụ và tài liệu về Upshot.js ở đâu?
- 5. Tôi có thể tìm các ví dụ rõ ràng về MVC ở đâu?
- 6. Tôi có thể tìm các ví dụ về biểu mẫu web yếu tố ở đâu?
- 7. Tôi có thể tìm các ví dụ về bsddb đang sử dụng ở đâu?
- 8. Tôi có thể tìm thấy các ví dụ phù hợp về quy ước PEP 257 Docstringions ở đâu?
- 9. Tôi có thể tìm các ví dụ về bản vẽ 2D trên iPhone ở đâu?
- 10. Tôi có thể tìm thấy ví dụ về iPhone OpenGL ES phản hồi liên lạc ở đâu?
- 11. Tôi có thể tìm thấy ví dụ về dự án mùa xuân tốt với Hibernate ở đâu?
- 12. Tôi có thể tìm thấy một số ví dụ hay để tìm hiểu các khái niệm cơ bản về luồng?
- 13. Ví dụ về báo cáo pdf SSRS tìm kiếm tuyệt vời
- 14. Xin chào ví dụ thế giới về VFS: tạo một tệp zip từ đầu
- 15. Tôi có thể tìm thấy một số hướng dẫn về xương sống-quan hệ tốt ở đâu?
- 16. Tài liệu tuyệt vời nổi tiếng của Satchless ở đâu?
- 17. Một ví dụ tuyệt vời về đóng gói hiệu quả thông qua việc ẩn thông tin?
- 18. Tôi có thể tìm các ví dụ cấu hình Plone 4.1 wsgi ở đâu?
- 19. Tôi có thể tìm hiểu về chuỗi JNDI ở đâu?
- 20. Tôi có thể tìm thấy triển khai XMLHttpRequest ở đâu?
- 21. Tôi có thể tìm ứng dụng ví dụ Apple CrashLanding ở đâu?
- 22. Tôi có thể tìm thấy một số hướng dẫn và hướng dẫn về WS-Security tốt ở đâu?
- 23. Tôi có thể tìm thấy khác biệt về sự kiên nhẫn ở đâu?
- 24. Tôi có thể tìm thấy tệp System.Linq.Dynamic ở đâu?
- 25. Gợi ý các ví dụ tuyệt vời về mã C/C++ thực
- 26. Tôi có thể tìm các ví dụ thực tế về các ứng dụng được viết bằng python ở đâu?
- 27. Tôi có thể tìm các ví dụ điển hình về thử nghiệm tập lệnh Thor với RSpec ở đâu?
- 28. Có một ví dụ điển hình về Facebook Connect ở bất kỳ đâu trên mạng không?
- 29. Tôi có thể tìm thấy một ví dụ đơn lẻ được thể hiện ở Ivy, Maven, Gant và Gradle ở đâu?
- 30. Tôi có thể tìm thấy hướng dẫn/giới thiệu hay về Mã hóa trực tiếp ở đâu?
Liệu thiết bị lưu giữ có thực sự hoạt động không? –