如何刮没有页面的网址

时间:2016-02-27 16:25:41

标签: python web-scraping beautifulsoup

我正在抓取一个没有页面的网页,我怎么能抓住这些页面来获取我想要的信息。假设我正在抓取网址here 这个页面有两个页面,我如何抓取这些总页数并获得总产品列表。

到目前为止我做了什么: 我正在抓取他们正在通过正则表达式抓取特定网址的网址 并试图去那个网址,并从该链接他们没有其他页面包含信息链接产品名称。我希望从所有页面中获取该产品名称。

我的代码:

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

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:-1)

据我所知,你想要做的就是爬几页并刮掉它们。

我建议你看看Scrapy

你可以抓取网页并抓取它们,Documentation包含一个教程,在我看来非常好。