[英]slideshare web scrape page views python
嘿伙計們 對於我的學校項目,我需要使用 python 抓取 slideshare.net 以獲取頁面視圖。 但是,它不會讓我抓取用戶名的頁面瀏覽量(教授專門告訴我們要抓取的)例如,如果我轉到底部的 slideshare.net/Username ,當我進入頁面時會有一個頁面瀏覽量計數器源代碼是
<span class="noWrap"> xxxx views </span>
當我將它插入 python 時
<span class="noWrap"> (.+?) </span>
什么也沒發生,我得到的只是輸出窗口中的 []
import urllib
import re
symbolfile = open("viewpage.txt")
symbolslist = symbolfile.read()
for symbol in symbolslist:
print symbol
htmlfile = urllib.urlopen("http://www.slideshare.net/xxxxxxx")
htmltext = htmlfile.read()
regex = ' <span class="noWrap">(.+?)</span>'
regex_a = '<title>(.+?)</title>'
pattern = re.compile(regex)
pattern_a = re.compile(regex_a)
view = re.findall(pattern,htmltext)
view_a = re.findall(pattern_a,htmltext)
print (view, view_a)
您的正則表達式字符串的開頭有一個空格,因此只有在<span
... 之前有(至少)一個空格時,它才會匹配。
所以代替
regex = ' <span class="noWrap">(.+?)</span>'
嘗試
regex = '<span class="noWrap">(.+?)</span>'
甚至更好
regex = r'<span class="noWrap">\\s*(.+?)\\s*</span>'
像r'stuff'
這樣的原始字符串更適合用於正則表達式,因此您不必在正則表達式字符串中轉義太多內容。
\\s
模式將占用空間,因此您無需在使用findall()
捕獲的數據上使用strip()
findall()
。
我還應該提到, pattern.findall(text)
語法比re.findall(pattern, text)
更好一些。
雖然這在技術上不是一個答案,但您需要更改正則表達式。 我建議你看看 python regex 章節。
我要告訴你的是你的線路
regex = ' <span class="noWrap">(.+?)</span>'
根據網頁的輸出,不會匹配您所追求的內容,因為 html 中有回車符,並且您的正則表達式與這些不匹配,因此在您運行腳本時會出現空列表。
或者您可以在運行正則表達式之前刪除回車符
htmltext = htmltext.replace("\n","")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.