簡體   English   中英

在Python 2.7中使用字符串數組

[英]Using string array in Python 2.7

我正在嘗試使用Python 2.7.2進行抓取。 我剛剛開始使用Python,但是不幸的是它並不像我想象的那樣直觀。 我嘗試從所有頁面收集所有特定的-s。 我不知道如何從字符串數組的所有頁面中累積結果。 到目前為止,我僅從1頁獲得結果。 我知道這對於使用python編寫的人來說是一個超級容易的問題。 所以請幫幫我。 這是代碼:

import urllib
import re
j=1
while j<10:
    url="http://www.site.com/search?page=" + str(j) + "&query=keyword"
    print url
    htmlfile=urllib.urlopen(url)
    htmltext=htmlfile.read()
    regex='<span class="class33">(.+?)</span>'
    pattern=re.compile(regex)
    spans=re.findall(pattern,htmltext)
    #spans[j] insttead of spans doesn't work
    #spans.append(spans) doesn't work
    j+=1
i=0
while i<len(spans):
    print spans[i]
    i+=1
  1. 將所有不變代碼放在for循環之外
  2. 外面for環路初始化s為空列表

     s = [] 
  3. for循環內

      s.extend(re.findall(pattern, htmltext)) 

如果您喜歡s += re.findall(pattern, htmltext)會做同樣的事情

更改

spans=re.findall(pattern,htmltext)

spans.extend(re.findall(pattern,htmltext))

我還要稍微修改一下循環語法

import urllib
import re
spans = []
for j in range(1,11):
    url="http://www.site.com/search?page=" + str(j) + "&query=keyword"
    print url
    htmlfile=urllib.urlopen(url)
    htmltext=htmlfile.read()
    regex='<span class="class33">(.+?)</span>'
    pattern=re.compile(regex)
    spans.extend(re.findall(pattern,htmltext))
for span in spans:
    print span

在循環之前,定義范圍:

spans = []

然后在您的循環中:

spans.extend(re.findall(pattern,htmltext))

findall方法將返回一個列表。 您想在每次迭代中使用新的跨度擴展跨度列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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