如何刮没有网页的网址

如何刮没有网页的网址

问题描述:

我正在刮一个页面没有页面的网页,我该如何刮这些页面来获取我想要的信息。假设我刮了一个网址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

据我所知,你想要做的是抓取几页,并刮掉它们。我建议你看看Scrapy

您可以抓取网页并抓取它们,Documentation包含一个教程,在我看来这很不错。

如果你想刮用于图片的页面,我建议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