2016-02-27 137 views
0

我正在刮一個頁面沒有頁面的網頁,我該如何刮這些頁面來獲取我想要的信息。假設我颳了一個網址http://i.cantonfair.org.cn/en/ExpProduct.aspx?corpid=0776011226&categoryno=446 並且這個頁面有兩個頁面,我如何刮掉這些總頁面並獲得總產品列表。如何刮沒有網頁的網址

我所做的到現在: 我刮從我通過正則表達式 刮特定的URL,並試圖進入該網址,並從該鏈接的URL他們沒有其他的網頁包含的信息鏈接的產品名稱。我想從所有頁面獲取該產品名稱。

我的代碼:

from bs4 import BeautifulSoup 
import urllib.request 
import re 
import json 
response = urllib.request.urlopen("http://i.cantonfair.org.cn/en/ExpProduct.aspx?corpid=0776011226&categoryno=446") 
soup = BeautifulSoup(response, "html.parser") 
productlink = soup.find_all("a", href=re.compile(r"ExpProduct\.aspx\?corpid=[0-9]+.categoryno=[0-9]+")) 
productlink = ([link["href"] for link in productlink]) 
print (productlink) 

在此之後,我被卡住。我正在使用python 3.5.1和Beautifulsoup

回答

-1

據我所知,你想要做的是抓取幾頁,並刮掉它們。我建議你看看Scrapy

您可以抓取網頁並抓取它們,Documentation包含一個教程,在我看來這很不錯。

0

如果你想刮用於圖片的頁面,我建議CSS Selectors

獲取的項目列表中,以後您可以搜索下一個頁面。當你停止進入下一頁時,你知道你已經完成了。

def get_next_page(soup): 
    pages = soup.select('div[id="AspNetPager1] a[href]') 
    for page in pages: 
     if page.text == 'Next': 
      return page 

response = urllib.request.urlopen("http://i.cantonfair.org.cn/en/ExpProduct.aspx?corpid=0776011226&categoryno=446") 
soup = BeautifulSoup(response, "html.parser") 
url = 'http://i.cantonfair.org.cn/en/' 
products = [] 

next_page = get_next_page(soup) 
while next_page is not None: 
    products += soup.select('div[class="photolist"] li') 
    response = urllib.request.urlopen(url + next_page['href']) 
    soup = BeautifulSoup(response, "html.parser") 
    next_page = get_next_page(soup) 
products += soup.select('div[class="photolist"] li') 

product_names = set() 
for product in products: 
    product_names.add(product.text) 

print(product_names) 
+0

我只想獲得產品名稱如何得到它? –

+0

,它似乎不是到下一頁。 –

+0

如果您將在解釋器中進行測試,您可以看到確實存在對下一頁的請求。此外,您可以看到發現的物品的長度增加了大小。 – GLaDOS