使用Python和Beautiful Soup在非直接网页上提取文本

时间:2013-11-20 14:20:24

标签: python beautifulsoup

我正在尝试执行以下操作:

  1. 页面上的拾取文本(与浏览器打开不同)
  2. 处理多个页面
  3. 案例是:

    我正在尝试使用Python和Beautifulsoup来获取荷兰语列表 公司网站http://www.fenex.nl

    我尝试了下面的按键,但没有一个能用完。

    soup.find_all('span')
    soup.find_all('a')
    soup.find_all('td')
    soup.find_all('tr')
    soup.find_all("tr",{"class":"even"})
    

    然后我从主页面找到了“Vind een expediteur”,然后是“Toon alle leden“,它导致this member page。但实际上直接键入此网址时,它不会进入成员列表页面。

    那么我该如何获取会员名单呢?

    另一个非常重要的问题是:页面持续到45,并且将来可能会发生变化。如何知道Python代码逐页选择它们?

1 个答案:

答案 0 :(得分:1)

您可以尝试为页面创建一些机器人。 BeautifulSoap是用于轻松解析html文本的库,这就是全部。如果您想逐页浏览,则必须使用urllib进行编写。这是一个简单的例子:

import urllib
from BeautifulSoup import *

url = "http://www.domain.com/page/path?page="
count_of_pages = 10

for page in xrange(1, count_of_pages):
    response = urllib.urlopen("%s%d" % (url, page))
    webPage = BeautifulSoup(webFile.read())

    # Parse page with great module BeaurifulSoap

但是这段代码可以帮助您正常加载页面。该页面从AJAX获取数据。请看这个页面:

http://www.fenex.nl/CMS/asynchronousrendering/CrmSearchResultFenexMemberCompanies/CrmSearchResultFenexMemberCompaniesByMemberCriteriaRenderControl.aspx?_=1384960662265&cid=9&pageNr=1&fenexSearchId=-214748364

我使用chorme,您可以按Ctrl + Shift + J,打开标签Network并重新加载页面。您可以看到所有请求,在此列表中,您可以找到包含数据的正确网址。