#<link rel='canonical' href='http://www.samplewebsite.com/image/5434553/' />
#I am trying to grab the text in href
image = str(Soup)
image_re = re.compile('\<link rel=\'cononical\' href=')
image_pat = re.findall(image_re, image)
print image_pa
#>> []
#Thanks!
回答
編輯:這使用BeautifulSoup包,我以爲我在這個問題的前一個版本中看到。
編輯:更直接的方式是這樣的:
soup = BeautifulSoup(document)
links = soup.findAll('link', rel='canonical')
for link in links:
print link['href']
相反的一切,你可以使用:
soup = BeautifulSoup(document)
links = soup("link")
for link in links:
if "rel" in link and link["rel"] == 'canonical':
print link["href"]
+1,很酷。你需要什麼庫和/或你需要導入哪些模塊才能工作? – 2012-01-16 15:48:20
只是BeautifulSoup,因爲你已經在使用 – jknupp 2012-01-16 15:49:04
我不是發佈這個問題的人(另外我沒有在我看到的問題的版本中看到任何BeautifulSoup引用)。我可以看到BeautifulSoup,但我認爲未來的新手可能會發現更多有用的信息,如果您將其添加到評論或答案。 – 2012-01-16 15:52:28
使用兩個正則表達式:
import re
link_tag_re = re.compile(r'(<link[^>]*>')
# capture all link tags in your text with it. Then for each of those, use:
href_capture = re.compile(r'href\s*=\s*(\'[^\']*\'|"[^"]*")')
第一個正則表達式會捕獲整個<link>
標籤;第二個將尋找href="something"
或href='something'
。
一般來說,儘管這個問題是一個完美的常規語言問題,但您應該使用HTML解析器。它們對於這類事情的使用要簡單得多,而且不太可能導致你的問題。
您應該使用HTML解析器,例如lxml.html
或BeautifulSoup
。但是,如果你只想搶單link
的href
,你可以使用一個簡單的正則表達式太:
re.findall(r"href=(['\"])([^\1]*)\1", url)
你正在使用的數據正確的HTML解析器的更好,但如果你真的想要去沿着這條路線,然後下面將做到這一點:
>>> data = "... <link rel='canonical' href='http://www.samplewebsite.com/image/5434553/' /> ..."
>>>
>>> re.search("<link[^>]+?rel='canonical'[^>]+?href='([^']+)", x).group(1)
'http://www.samplewebsite.com/image/5434553/'
>>>
我還注意到,您的HTML使用單引號,而不是雙引號。
這將是相匹配的HTML示例你給的正則表達式:
<link rel='canonical' href='(\S+)'
但我不知道,如果正則表達式是正確的工具。對於值使用雙引號(或不帶引號)時,此正則表達式會失敗。或者如果rel和href被轉過來。
我建議使用類似BeautifulSoup的東西來查找和收集所有rel規範的href值。
- 1. 如何使用正則表達式來抓取第八個字
- 2. 正則表達式來抓取參數
- 3. 正則表達式來提取HTML值
- 4. 建立正則表達式來抓詞
- 5. 用正則表達式來抓取用戶名
- 6. 如何使用正則表達式來拉一個子串? (屏幕抓取)
- 7. 內部抓取件。*?正則表達式
- 8. 正則表達式只抓取日期
- 9. 抓取Scrapy的URL正則表達式
- 10. 正則表達式基址URL抓取
- 11. 頁面抓取的正則表達式
- 12. 數據抓取的正則表達式?
- 13. 抓取正則表達式的部分
- 14. 如何使用正則表達式來獲取以下模式?
- 15. 如何使用正則表達式來提取嵌套模式
- 16. 正則表達式 - 如何正確地抓取嵌套值
- 17. 使用正則表達式來提取所有html attrs
- 18. 使用正則表達式來獲取HTML標記中的值?
- 19. 使用JavaScript和正則表達式來獲取HTML體
- 20. 如何使用正則表達式獲取內部html內容
- 21. 正則表達式來抓取一組數字
- 22. 正則表達式來抓取「WORD」,除了「#」之後
- 23. 正則表達式來抓取類似文本中的值
- 24. 正則表達式提取HTML正文
- 25. 如何採取使用正則表達式(正則表達式)在PHP
- 26. 如何使用正則表達式來提取子字符串?
- 27. 如何使用正則表達式來提取json字段?
- 28. 如何使用正則表達式來提取以下標記?
- 29. 使用正則表達式抓取字符串
- 30. Nutch的抓取使用正則表達式
什麼類型是'湯'? – soulcheck 2012-01-16 15:47:38