【问题标题】:Parsing website with python用python解析网站
【发布时间】:2015-11-30 08:28:09
【问题描述】:

我想从这个页面上刮掉信息:https://www.jobsbank.gov.sg/ICMSPortal/portlets/JobBankHandler/SearchDetail.do?id=JOB-2015-0321370

但是,我无法使用 python 解析它。我不确定是什么问题,因为我不熟悉 html。这可能与我在 html 中看到的影子根有关吗?如果是这样,我该如何克服它?

url = 'https://www.jobsbank.gov.sg/ICMSPortal/portlets/JobBankHandler/SearchDetail.do?id=JOB-2015-0321370'
hdr = {'User-Agent':'Mozilla/5.0'}
while True:
    req = urllib2.Request(url,headers=hdr)
    try:
        page = urllib2.urlopen(req)
    except:
        print("Exception ConnectionError was caught, retrying requests...")
        time.sleep(5)
    else:
        break
content = page.read()
tree = html.fromstring(content)

jobTitle = tree.xpath('//div[@class="jobDes"]/h3/text()')

谢谢。

【问题讨论】:

  • 你遇到了什么问题?
  • 您是否获得了正确的 html,或者它阻止了您使用刮板?我试过了,经过几次尝试,它开始返回一个页面,上面写着Hello, I am a java script test analytics page

标签: python html parsing web-scraping


【解决方案1】:

您无法抓取所需的职位描述内容,因为正如您所建议的,它是<iframe> 标记的一部分。 iframe 的内容是在页面加载后使用 JavaScript 设置的,因此不会作为 page = urllib2.urlopen(req) 请求的一部分返回。要从 iFrame 中抓取内容,您需要使用浏览器自动化模块,例如 Selenium http://docs.seleniumhq.org/docs/03_webdriver.jsp

【讨论】:

  • 我怕需要用到Selenium(不熟悉)。不过谢谢你的回答。
  • Selenium 需要一点学习,但是一旦你启动并运行就可以了。下一个问题将是解决“无头浏览”问题——这样您就可以在不实际显示在屏幕上的情况下自动化浏览器。
猜你喜欢
  • 2017-05-29
  • 1970-01-01
  • 2019-04-12
  • 2021-01-30
  • 2020-03-13
  • 2017-04-03
  • 1970-01-01
  • 1970-01-01
  • 2015-09-13
相关资源
最近更新 更多