簡體   English   中英

slideshare 網頁抓取頁面瀏覽量 python

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM