나는 Beautiful Soup을 사용하여 아주 간단한 교체 작업을하고 싶습니다. 페이지의 모든 A 태그를 방문하여 href에 "? foo"를 추가하고 싶다고 가정 해 봅시다. 어떤 사람이 그런 간단한 일을하는 방법의 예를 게시하거나 링크 할 수 있습니까?"안녕하세요 세상"- 간단한 아름다운 스프 예제는 어디에서 찾을 수 있습니까?
7
A
답변
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
그 인쇄 :
<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>
documentation는 일부 examples for changing attributes있다. BeautifulSoup의 모든 일반적인 측면을 다루는 광범위한 자습서입니다. 나는 문서에서 빠진 것이 무엇인지 모릅니다. 아마도 당신은 분명히해야합니다.
1
내 예 :
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
이 코드는 Alibaba.com에 manufactury의 한 페이지를 구문 분석. 당신은 그것을 볼 수 있습니다 페이지 - http://xmxinhuafeng.en.alibaba.com/aboutus.html
관련 문제
- 1. 복잡한 아름다운 스프 쿼리
- 2. 간단한 AWK 예제는 어디에서 시작해야합니까?
- 3. 파이썬 아름다운 스프 인수
- 4. 파이썬 아름다운 스프 태그는
- 5. I18n C++ 안녕하세요 세상 복수형
- 6. Sitecore 웹 컨트롤 예제는 어디에서 찾을 수 있습니까?
- 7. 좋은 예제는 어디에서 찾을 수 있습니까? GAsyncQueue는 프로세스와 스레드간에 사용됩니다.
- 8. flex와 bison의 실제 예제는 어디에서 찾을 수 있습니까?
- 9. 클라이언트 측 웹 소켓 예제는 어디에서 찾을 수 있습니까?
- 10. 스레딩의 기초를 배우기위한 좋은 예제는 어디에서 찾을 수 있습니까?
- 11. C++ 용 ZwCreateFile 예제는 어디에서 찾을 수 있습니까?
- 12. jqGrid 다이나믹 테이블 편집 예제는 어디에서 찾을 수 있습니까?
- 13. 누군가 나에게 페이팔 IPN의 "안녕하세요 세상"을 보여줄 수 있습니까?
- 14. 파이썬 문자열 처리, 유니 코드 & 아름다운 스프
- 15. 철 파이썬, 아름다운 스프, win32 앱
- 16. 아름다운 스프 - 깨진 태그를 고치는 방법
- 17. 왜 glib을위한 "안녕하세요 세상"을 만들 수 없습니까?
- 18. Github에서 사용하는 아이콘은 어디에서 찾을 수 있습니까?
- 19. 초보자를위한 J2ME 폴란드어에 대한 좋은 예제는 어디서 찾을 수 있습니까?
- 20. 어디에서 Castle.MicroKernel.dll을 찾을 수 있습니까?
- 21. 어디에서 GladeGen을 찾을 수 있습니까?
- 22. ContactsListActivity는 어디에서 찾을 수 있습니까?
- 23. 어디에서 VBSQL.VBX를 찾을 수 있습니까?
- 24. ExpressionParseHelper는 어디에서 찾을 수 있습니까?
- 25. 어디에서 'application.log'를 찾을 수 있습니까?
- 26. 어디에서 DeskUtil 문서/도움말을 찾을 수 있습니까?
- 27. 간단한 JavaScript 기반 HTML 구문 형광펜은 어디에서 찾을 수 있습니까?
- 28. Perl을위한 간단한 W3C Validator API 정보는 어디에서 찾을 수 있습니까?
- 29. 내 게임을위한 간단한 무료 .mp3 테마는 어디에서 찾을 수 있습니까?
- 30. 통합 테스트에 대한 코드 예제는 어디서 찾을 수 있습니까?
실제로 keep-alive 작동합니까? –