通过web scrape检索脚本化页面URL

时间:2014-04-14 11:30:31

标签: python web-scraping

我正在尝试从网页报废搜索查询中获取所有文章链接,但我似乎没有得到任何结果。

有问题的网页:http://www.seek.com.au/jobs/in-australia/#dateRange=999&workType=0&industry=&occupation=&graduateSearch=false&salaryFrom=0&salaryTo=999999&salaryType=annual&advertiserID=&advertiserGroup=&keywords=police+check&page=1&isAreaUnspecified=false&location=&area=&nation=3000&sortMode=Advertiser&searchFrom=quick&searchType=

我的方法: 我正在尝试获取文章的ID,然后将它们附加到已知的url(http://www.seek.com.au/job/+ id)但是我的请求中没有id(来自http://docs.python-requests.org/en/latest/的python包)),实际上根本没有文章。

似乎在这种特殊情况下我需要以某种方式执行脚本(生成id)以获取完整数据,我该怎么做?

也许有其他方法可以从此搜索查询中检索所有结果?

1 个答案:

答案 0 :(得分:1)

如上所述,下载Selenium。有python bindings

Selenium是一个Web测试自动化框架。实际上,通过使用selenium,您可以远程控制Web浏览器。这是必要的,因为Web浏览器具有javascript引擎和DOMs,允许AJAX发生。

使用此测试脚本(假设您已安装Firefox;如果需要,Selenium支持其他浏览器):

# Import 3rd Party libraries
from selenium                                       import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

class requester_firefox(object):
    def __init__(self):
        self.selenium_browser = webdriver.Firefox()
        self.selenium_browser.set_page_load_timeout(30)

    def __del__(self):
        self.selenium_browser.quit()
        self.selenium_browser = None

    def __call__(self, url):
        try:
            self.selenium_browser.get(url)
            the_page = self.selenium_browser.page_source
        except Exception:
            the_page = ""
        return the_page

test = requester_firefox()
print test("http://www.seek.com.au/jobs/in-australia/#dateRange=999&workType=0&industry=&occupation=&graduateSearch=false&salaryFrom=0&salaryTo=999999&salaryType=annual&advertiserID=&advertiserGroup=&keywords=police+check&page=1&isAreaUnspecified=false&location=&area=&nation=3000&sortMode=Advertiser&searchFrom=quick&searchType=").encode("ascii", "ignore")

它将加载SEEK并等待AJAX​​页面。 encode方法是必要的(至少对我来说),因为SEEK返回一个unicode字符串,Windows控制台似乎无法打印。